Objective-C文法學習是本文要介紹的內容,主要介紹了變數、方法、對象等一些內容。我們一起來看詳細內容。
變數定義
interface 檔案*.h)中定義,定義要放在 interface 名稱後的括弧內
對象的定義要用指標[NSButton *aButton;],使用正常名稱
普通變數正常定義使用
方法定義
interface 檔案*.h)中定義,定義放在括弧外且 @end 標記前
以符號[-]表對象方法,[+]表靜態方法)開頭,其次以括弧括起來的傳回值類型,然後是方法名稱,以冒號開始參數的加入,參數按正常定義格式,但要把類型以括弧括起來,第一個參數以後的參數要加標誌符,以分號結束[-(void)testFunction:(NSString *)aString secondPara:(int)aInt;]
方法名以小寫字母開頭
方法的實現
implementation 檔案*.m)中定義,檔案中先以 import 關健字引入 interface 檔案[#import "MyClass.h"],方法定義在 @implementation和@end關鍵字之間定義方法,跟定義在interface中對方法的定義類似,但方法的實現在大括弧之間
方法的參數是方法的一部分,如果參數是指標則在使用時要重新分配記憶體,用後要釋放記憶體,如果是普通變數則正常使用,如:
- -(void)setName:(NSString *)tmpName{
- [tmpName retain];
- [tmpName release];
- tmpName = name;
- }
釋放記憶體操作放在對tmpName的調用之後,調用一個釋放的方法。
初始化類的對象可以在方法[-(id)init{}]中實現。
方法及變數的使用
執行個體化一個對象:先分配記憶體並建立類
- {MyClass *anInstance=[MyClass alloc;]}
然後初始化對象:{[anInstance init]}(調用了執行個體的init方法),則一般執行個體化為:
- {MyClass *anInstance =[[MyClass alloc] init];}
以中括弧來調用{[object message]},以分號結尾
參數在對象操作後加入{[object method:para1 labelPara2:para2]},方法可做嵌套,在要使用的地方以同樣的方式調用即可
調用同一個類中的其它方法,對象名用 self
使用執行個體直接調用對象的變數是可以的,但最好通過方法訪問變數
傳回值可以正常使用
當然用alloc建立了執行個體,也要釋放:
- {[anInstance release];}
記憶體自動釋放方式
以 stringWithSting 代替 alloc ,可以使系統自動釋放記憶體
建立對象:
- +(id)stringWithString:(NSString *)aString;
- *aString =[NSString stringWithString:@"Hello,World!"]
執行個體化對象時設定自動回收:
- {MyClass *anInstance=[[[MyClass alloc] init] autorelease];}
一般的語言使用關鍵字class來定義類,而objective-c是使用關鍵字@interface加上@end來聲明,用關鍵字@implementation加上@end來定義類。其二,用類的對象來調用該類的方法時,一般的進階語言都是用對象名加上符號‘.’來調用,但是objective-c是用中括弧把對象名和所調用的方法名括起來調用。
(1)Objective-C的編譯器處理尾碼為m的檔案時,可以識別Objective-C和c的代碼,處理mm檔案可以識別Objective-C,c,c++代碼,但cpp檔案必須只能用c/c++代碼,而且cpp檔案include的標頭檔中,
也不能出現Objective-C的代碼,因為cpp只是cpp
(2)在mm檔案中混用cpp直接使用即可,所以Objective-C混cpp不是問題
(3)在cpp中混用Objective-C其實就是使用Objective-C編寫的模組是我們想要的。
如果模組以類實現,那麼要按照cpp class的標準寫類的定義,標頭檔中不能出現Objective-C的東西,包括#import cocoa的。實現檔案中,即類的實現代碼中可以使用Objective-C的東西,
可以import,只是尾碼是mm。如果模組以函數實現,那麼標頭檔要按c的格式聲明函數,實現檔案中,c++函數內部可以用Objective-C,但尾碼還是mm或m。
總結:只要cpp檔案和cpp include的檔案中不包含Objective-C的東西就可以用了,cpp混用Objective-C的關鍵是使用介面,而不能直接使用實現代碼,實際上cpp混用的是Objective-C編譯後的o檔案,
這個東西其實是無差別的,所以可以用。而Objective-C混用cpp就簡單了,直接用就可以,因為Objective-C的編譯器支援啊
小結:Objective-C文法學習 初學者必備文檔的內容介紹完了,希望本文對你有所協助!