扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
今天来学习一下Dealloc方法的使用。
成都创新互联公司专注于常德网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供常德营销型网站建设,常德网站制作、常德网页设计、常德网站官网定制、微信小程序定制开发服务,打造常德网络公司原创品牌,更为您提供常德网站排名全网营销落地服务。它的作用是,当对象的引用计数为0,系统会自动调用dealloc方法,回收内存。它的一般写法:
1:-(void)dealloc{
[super dealloc]; }
2:-(void)dealloc{NSLog(@"laptop dead"); [_cpu release]; [super dealloc]; }(一):为什么需要调用父类的dealloc方法?
子类的某些对象实例是继承自父类的。因此,我们需要调用父类的dealloc方法,来释放父类
拥有的这些对象。
(二):调用的顺序
一般说调用的顺序是,当子类的对象释放完时,然后再释放父类的所拥有的实例。这一点与调用初始化方法,
正好相反
下面使用一个例子来演示一下:
1:父类Vehicle.h
#import2:父类Vehicle.m@interface Vehicle : NSObject { @private NSString *_name; } -(id)initWithName:(NSString *)name; @end
#import "Vehicle.h"
@implementation Vehicle
-(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" @class Engine; @interface Car : Vehicle { Engine *_engine; } -(void)setEngine:(Engine *)engine; @end #import "Car.h"@implementation Car-(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, const char * argv[]) { @autoreleasepool { NSString *name=[[NSString alloc]initWithFormat:@"audi"]; Car *car=[[Car alloc]initWithName:name]; [name release]; Engine *v6=[[Engine alloc]init]; [car setEngine:v6]; [v6 release]; //do something [car release]; } return 0; }
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流