日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Objective-C学习笔记---构造函数和析构函数

發布時間:2024/9/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Objective-C学习笔记---构造函数和析构函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
????? 簡單的講,構造函數就是在創建一個對象的時候起到初始化的作用,對這個對象里的一些成員變量進行初始化,析構函數就是在對象被刪除進行一些清理工作,也就是專門的掃尾工作,下面用代碼來進行具體說明。

?

一、構造函數

  在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 @end 10 11 12 @implementation Person 13 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 @end 17 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了!

?

?

?

?

總結

以上是生活随笔為你收集整理的Objective-C学习笔记---构造函数和析构函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。