[好程式員訓練營]Objective-C學習筆記---建構函式和解構函式,objective-c學習筆記

來源:互聯網
上載者:User

[好程式員訓練營]Objective-C學習筆記---建構函式和解構函式,objective-c學習筆記

<A href="http://www.goodprogrammer.org/" target="blank">ios培訓</A>------我的OC語言筆記,期待與您交流!  

 

  簡單的講,建構函式就是在建立一個對象的時候起到初始化的作用,對這個對象裡的一些成員變數進行初始化,解構函式就是在對象被刪除進行一些清理工作,也就是專門的掃尾工作,下面用代碼來進行具體說明。

 

一、建構函式

  在OC中凡是已init開頭的函數我們都稱之為建構函式,在聲明建構函式的時候,不帶參數的一般直接聲明為“-(id)init”,帶參數的一般聲明為“-(id)initWith...”。

 1 @interface Person:NSObject{ 2 @private 3     int age; 4     NSString *name; 5 } 6 -(id)init;                   //不帶參數的建構函式 7 -(id)initWithname:(NSString *)newname age:(int)newage;   //帶參數的建構函式 8  9 @end10 11 12 @implementation Person13 14 -(id)init{15     self = [super init];16     if(self){17        name = @“xiaoming”;18        age = 20;19     }20     return self;21 }22 23 -(id)initWithname:(NSString *)newname age:(int)newage{24      if(self=[super init]){25         age = newage;26         name = newname; 27     }   28     return self;29 }30 int main(int argc, const char * argv[]) {31 32     Person *p1 = [[Person alloc] init];              //對象產生後調用初始化函數    33     Person *P2 = [[Person alloc] initWithnam:(NSString *)xiaohong age:19];34     //調用帶參數的建構函式進行初始化35     return 0;36 }

這段代碼裡,在Person類中聲明了,兩個初始化函數,第一個帶參數第二個不帶參數,在對對像進行初始化的時候,帶參數的初始化函數顯得更為靈活,裡面的初始值可以自己改動。

 

二、解構函式

  解構函式聲明為“-(void)dealloc”這個函數我們不能通過對象去人為的調用它,解構函式會在對像快要死的時候自己運行,來看代碼。

 1 @interface Person:NSObject{ 2 @private 3     int age; 4     NSString *name; 5 } 6 -(void)dealloc;                    //聲明解構函式,解構函式只能有一個 7 @end 8  9 10 @implementation Person      //實現Person 類11 -(void)dealloc{12     NSLog(@"this is dealloc function");13     [super dealloc];14 }15 16 @end17 18 Person *xiaoming = [Person alloc];19 [xiaoming release];

  在代碼的第六行我們聲明了解構函式,並且在第11行處我們對其進行了複寫,這個函數會在執行[xiaoming release];的時候運行,因為release函數就是銷毀對象。

 

注意:有時候我們複寫dealloc函數的時候加上[super dealloc];會出現錯誤

這是因為ARC是iOS 5推出的新功能,全稱叫 ARC(Automatic ReferenceCounting)。簡單地說,就是代碼中自動加入了retain/release,原先需要手動添加的用來處理記憶體管理的引用計數的代碼可以自動地由編譯器完成了。該機制在iOS 5/ Mac OS X 10.7 開始匯入,利用 Xcode4.2可以使用該機制。簡單地理解ARC,就是通過指定的文法,讓編譯器(LLVM3.0)在編譯代碼時,自動產生執行個體的引用計數管理部分代碼。有一點,ARC並不是GC,它只是一種代碼靜態分析(StaticAnalyzer)工具。

解決辦法:雙擊中間的工程名稱,進入build setting

將中間的Objective-C Automatic Reference Counting改為no就OK了!

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.