溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

OC之類和對象

發布時間:2020-07-22 01:04:31 來源:網絡 閱讀:881 作者:斯特凡 欄目:開發技術

     從今天開始我的IOS開發算是起步了,第一天學習Objective-C,感覺不是很爽OC之類和對象。作為一名Java程序猿的我,第一次使用OC語法什么的都不習慣,尤其是@到處都是,不過,今天看看還是有點兒收獲的OC之類和對象。

    今天主要看了OC的對象和類,對象就不提了,Java就是一門面向對象的語言,以前看《Thinking in Java》時就知道,everything is object ,所以這部分就過了。

在Xcode中類的定義和實現是分別保存在兩個文件中的,一個是.h文件,一個是.m文件。    

    .h文件中寫的是類的聲明部分,包括類的特征和行為的聲明(方法聲明)。   

    .m文件中寫的是行為的實現(方法的實現)。

    類的實現不能放在.h文件中的。


    OC中類的定義包含兩部分:

    1.接口部分:對外聲明類的特征和行為。(也就是對類進行一下說明,類似于說明書)

    2.實現部分:對內實現行為。(內部的具體實現)

接口的部分標志是:

@interface   類名 : NSObject{
    數據類型  實例變量;
    ...
}

- (返回值)對象名;   “-”是對象的方法
+ (返回值)方法名    “+”是類的方法 
@end

如:

@interface Person : NSObject{
//類的特征一定要寫在大括號{}內
//在OC中字符串用NSString *
//@public在這里的意思和Java中是差不多一樣的,加了之后此處的實例變量能夠被訪問,此外還有@private和@protected

    @public
    NSString *_name; 
    
    NSInteger _age; 

    NSString *_sex;

}

- (void)sayHi:(NSString *)talkWithYou;

@end


NSObject 是一個基類,幾乎所有的類都是繼承這個類(需要注意的是在OC中的基類或者根(root)類并不是只有這一個,例如NSProxy也是OC的基類)。

實現部分的標志是:

@implementation  類名

- (返回值)對象名{
   
}

@end

如:

@implementation Person

- (void)sayHi:(NSString *)talkWithYou{
    NSLog(@"%@",talkWithYou);
}

@end

在OC中使用NSLog(); 函數進行輸出


在聲明和實現寫好之后,就要在main.m文件中new個對象了,在main函數中使用以下方法新建一個:

Person *person = [[Person alloc]init];

另外還有一個

Person *Person = [Person new];

這個方法也可以新建一個,[Person new]基本等同于[[Person alloc]init],alloc 在分配內存的時候使用了zone。

不過,new方法并不受推薦,如果使用new的話,初始化方法就被固定死了,只能調用init,alloc則可以用自己的或定制的方法進行初始化。

例如:我們可以定制Person類的初始化

@interface Person : NSObject{
    @public
    NSString *_name; 
}

- (id)init;
//id返回值類型,表示初始化完成的對象。
@end
@implementation Person
- (int)init{

    _name = "鵬偉";
    return self;
}
@end

這樣,在Person的_name就初始化為"鵬偉"了。

上面代碼里有個self,self是個指針,指向方法的調用者,誰調用就指向誰,代表當前所指對象,可以利用self->成員變量名   訪問當前對象內部的實例變量,有點像Java中的this。。。

天也不早了,先寫到這里了就,回家啦,明天繼續。。。。。。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女