麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

[好程序員訓(xùn)練營]Objective-C學(xué)習(xí)筆記---構(gòu)造函數(shù)和析構(gòu)函數(shù)

2019-11-14 18:56:08
字體:
供稿:網(wǎng)友

<A href="http://***/" target="blank">ios培訓(xùn)</A>------我的OC語言筆記,期待與您交流!  

 

  簡單的講,構(gòu)造函數(shù)就是在創(chuàng)建一個對象的時候起到初始化的作用,對這個對象里的一些成員變量進(jìn)行初始化,析構(gòu)函數(shù)就是在對象被刪除進(jìn)行一些清理工作,也就是專門的掃尾工作,下面用代碼來進(jìn)行具體說明。

 

一、構(gòu)造函數(shù)

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

 1 @interface Person:NSObject{ 2 @PRivate 3     int age; 4     NSString *name; 5 } 6 -(id)init;                   //不帶參數(shù)的構(gòu)造函數(shù) 7 -(id)initWithname:(NSString *)newname age:(int)newage;   //帶參數(shù)的構(gòu)造函數(shù) 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];              //對象生成后調(diào)用初始化函數(shù)    33     Person *P2 = [[Person alloc] initWithnam:(NSString *)xiaohong age:19];34     //調(diào)用帶參數(shù)的構(gòu)造函數(shù)進(jìn)行初始化35     return 0;36 }

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

 

二、析構(gòu)函數(shù)

  析構(gòu)函數(shù)聲明為“-(void)dealloc”這個函數(shù)我們不能通過對象去人為的調(diào)用它,析構(gòu)函數(shù)會在對像快要死的時候自己運(yùn)行,來看代碼。

 1 @interface Person:NSObject{ 2 @private 3     int age; 4     NSString *name; 5 } 6 -(void)dealloc;                    //聲明析構(gòu)函數(shù),析構(gòu)函數(shù)只能有一個 7 @end 8  9 10 @implementation Person      //實(shí)現(xiàn)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];

  在代碼的第六行我們聲明了析構(gòu)函數(shù),并且在第11行處我們對其進(jìn)行了復(fù)寫,這個函數(shù)會在執(zhí)行[xiaoming release];的時候運(yùn)行,因?yàn)閞elease函數(shù)就是銷毀對象。

 

注意:有時候我們復(fù)寫dealloc函數(shù)的時候加上[super dealloc];會出現(xiàn)錯誤

這是因?yàn)锳RC是iOS 5推出的新功能,全稱叫 ARC(Automatic ReferenceCounting)。簡單地說,就是代碼中自動加入了retain/release,原先需要手動添加的用來處理內(nèi)存管理的引用計(jì)數(shù)的代碼可以自動地由編譯器完成了。該機(jī)制在iOS 5/ Mac OS X 10.7 開始導(dǎo)入,利用 Xcode4.2可以使用該機(jī)制。簡單地理解ARC,就是通過指定的語法,讓編譯器(LLVM3.0)在編譯代碼時,自動生成實(shí)例的引用計(jì)數(shù)管理部分代碼。有一點(diǎn),ARC并不是GC,它只是一種代碼靜態(tài)分析(StaticAnalyzer)工具。

解決辦法:雙擊中間的工程名稱,進(jìn)入build setting

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

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中文字幕亚洲欧美 | 久草在线资源视频 | 亚洲欧美成aⅴ人在线观看 av免费在线播放 | 亚洲欧洲日韩av | 国内毛片视频 | 久久精品欧美一区二区 | 国产91一区二区三区 | 最新一级毛片 | 欧洲成人综合网 | 免费在线观看国产精品 | 92看片淫黄大片欧美看国产片 | 国产成人av免费看 | 亚洲精品午夜国产va久久成人 | 国产精品国产三级国产在线观看 | 国产成人高清成人av片在线看 | 中文字幕在线观看1 | 亚洲资源在线播放 | 国产精品一区二av18款 | 黄色网电影 | 日韩中文字幕一区二区三区 | 成人福利视频导航 | 91精品国产免费久久 | 国产精品一区久久久久 | 成人三级在线播放 | 久久网一区二区 | 色a综合 | 久久国产在线观看 | 免费在线观看午夜视频 | 欧美熟videos肥婆 | 国产精品一区在线免费观看 | 亚洲日本韩国精品 | 欧美ab| 免费一级毛片观看 | 九色国产| 青久草视频 | 国产成人高清成人av片在线看 | 亚洲欧美一区二区三区在线观看 | av一二三四区| 国产精品麻豆一区二区三区 | 一级空姐毛片 | 中文字幕在线观看国产 |