Objective-C文法學習 初學者必備文檔

來源:互聯網
上載者:User

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中對方法的定義類似,但方法的實現在大括弧之間

方法的參數是方法的一部分,如果參數是指標則在使用時要重新分配記憶體,用後要釋放記憶體,如果是普通變數則正常使用,如:

 
  1. -(void)setName:(NSString *)tmpName{  
  2.     [tmpName retain];  
  3.     [tmpName release];  
  4.     tmpName = name;  

釋放記憶體操作放在對tmpName的調用之後,調用一個釋放的方法。

初始化類的對象可以在方法[-(id)init{}]中實現。

方法及變數的使用

執行個體化一個對象:先分配記憶體並建立類

 
  1. {MyClass *anInstance=[MyClass alloc;]} 

然後初始化對象:{[anInstance init]}(調用了執行個體的init方法),則一般執行個體化為:

 
  1. {MyClass *anInstance =[[MyClass alloc] init];} 

以中括弧來調用{[object message]},以分號結尾

參數在對象操作後加入{[object method:para1 labelPara2:para2]},方法可做嵌套,在要使用的地方以同樣的方式調用即可

調用同一個類中的其它方法,對象名用 self

使用執行個體直接調用對象的變數是可以的,但最好通過方法訪問變數

傳回值可以正常使用

當然用alloc建立了執行個體,也要釋放:

 
  1. {[anInstance release];} 

記憶體自動釋放方式

以 stringWithSting 代替 alloc ,可以使系統自動釋放記憶體

建立對象:

 
  1. +(id)stringWithString:(NSString *)aString;  
  2. *aString =[NSString stringWithString:@"Hello,World!"] 

執行個體化對象時設定自動回收:

 
  1. {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文法學習 初學者必備文檔的內容介紹完了,希望本文對你有所協助!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.