今天來學(xué)習(xí)一下Dealloc方法的使用。
公司主營業(yè)務(wù):成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出梨林免費做網(wǎng)站回饋大家。
它的作用是,當(dāng)對象的引用計數(shù)為0,系統(tǒng)會自動調(diào)用dealloc方法,回收內(nèi)存。它的一般寫法:
1:-(void)dealloc{
[super dealloc];}
2:-(void)dealloc{NSLog(@"laptop dead");[_cpu release];[super dealloc];}(一):為什么需要調(diào)用父類的dealloc方法?
子類的某些對象實例是繼承自父類的。因此,我們需要調(diào)用父類的dealloc方法,來釋放父類
擁有的這些對象。
(二):調(diào)用的順序
一般說調(diào)用的順序是,當(dāng)子類的對象釋放完時,然后再釋放父類的所擁有的實例。這一點與調(diào)用初始化方法,
正好相反
下面使用一個例子來演示一下:
1:父類Vehicle.h
#import2:父類Vehicle.m@interfaceVehicle:NSObject{@privateNSString*_name;}-(id)initWithName:(NSString*)name;@end
#import "Vehicle.h"
@implementationVehicle
-(id)initWithName:(NSString*)name{ self=[super init];if(self){ _name=[name copy];}return self;}-(void)dealloc{NSLog(@"vehicle dead");[_name release];[super dealloc];}@end3:子類Car.h#import4:子類Car.m#import "Vehicle.h"@classEngine;@interfaceCar:Vehicle{Engine*_engine;}-(void)setEngine:(Engine*)engine;@end #import "Car.h"@implementationCar-(void)setEngine:(Engine*)engine{if(_engine!=engine){[_engine release]; _engine=[engine retain];}}-(Engine*)engint{return _engine;}-(void)dealloc{NSLog(@"Car dead");[_engine release];[super dealloc];}@end5:測試main.m代碼#import運行截圖#import "Engine.h"#import "Car.h"int main(int argc,constchar* argv[]){@autoreleasepool{NSString*name=[[NSString alloc]initWithFormat:@"audi"];Car*car=[[Car alloc]initWithName:name];[name release]; Engine*v6=[[Engine alloc]init];[carsetEngine:v6];[v6 release];//do something[car release];}return0;}