Objective-C对象的生命周期

Objective-C对象的生命周期,第1张

概述Objective-C的对象拥有引用计数,对象被创建后其引用计数为1,当其引用计数减少为0时,系统将会销毁此对象。   对象引用计数加1: - (id) retain; 对象引用计数减1: - (void) release; –(void) autorelease; 获得对象当前引用的计数 - (unsigned) retainCount;     通常使用AutoreleasePool自动管理对

Objective-C的对象拥有引用计数,对象被创建后其引用计数为1,当其引用计数减少为0时,系统将会销毁此对象。

 

对象引用计数加1:
@H_403_12@- (ID) retain;


对象引用计数减1:
@H_403_12@- (voID) release;
–(voID) autorelease;


获得对象当前引用的计数
@H_403_12@- (unsigned) retainCount;

 

 

通常使用autoreleasePool自动管理对象的生命周期

 

@H_403_12@NSautoreleasePool *pool;
pool = [[NSautoreleasePool alloc] init];
...
[pool release];

 

如果过程中创建了大量对象,pool可能无法及时清除这些对象,导致内存占用过高,如果有必要,可以在过程中主动释放pool:

 

@H_403_12@[pool release];
pool = [[NSautoreleasePool alloc] init];

 

 

下面是几条Cocoa内存管理的规则:

如果你使用new,alloc,copy的方式获得一个对象,它的引用计数为1,由你负责调用release清除此对象。 如果你retain一个对象,你必须在使用之后对此对象调用release或者autorelease,保持它的引用计数平衡。 如果你通过其他途径获得一个对象,你不需要做任何事。  

Objective-C 2.0已支持垃圾回收技术(但iPhone不支持),可以在工程信息窗口的Build页,选择required   [-fobjc-gc-only] 。打开垃圾回收选项之后,要求将不再使用的对象设置为nil以确保其能正确被回收,而其他内存管理方式将会失效。

总结

以上是内存溢出为你收集整理的Objective-C对象的生命周期全部内容,希望文章能够帮你解决Objective-C对象的生命周期所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1069317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存