從今天開始我的IOS開發算是起步了,第一天學習Objective-C,感覺不是很爽。作為一名Java程序猿的我,第一次使用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。。。
天也不早了,先寫到這里了就,回家啦,明天繼續。。。。。。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。