首页 > 其他 > 详细

在dealloc方法中只释放引用和解除监听

时间:2014-12-25 15:57:03      阅读:293      评论:0      收藏:0      [点我收藏+]

对象在经历其生命周期后,最终会为系统所回收,这时候就要执行dealloc方法,在每个对象的生命周期内,此方法仅执行一次,也就是当保留基数将为0的时候。

你绝不应该自己调用dealloc方法,运行期系统会在合适的时候调用它。且,一旦调用过dealloc之后,对象就不再有效,后续方法调用均是无效的。

在dealloc中应该主要做些什么呢?

1.释放对象所拥有的引用:也就是把所有的OC对象都释放掉,ARC会通过自动生成的 .cxx_destruct方法,在dealloc中为你自动添加这些代码。对象所拥有的非OC对象也要释放。比如CoreFoundation对象就必须手工释放,因为它是由纯C的API所生成的。

2.解除监听:那就是把原来配置过的观测行为(observation behavior)都清理掉。包括KVO和NSNotificationCenter等通知。

3.不要再做其他事情。

需要注意的一些要点:

1.若对象持有文件描述符等系统资源,那么应该专门编写一个方法来释放此种资源。这样的类要和使用者约定:用完资源后必须调用相应地close方法。

2.执行异步任务的方法不应在dealloc中调用;只能在正常状态下执行的那些方法也不应该在dealloc中调用,因为此时对象已处于正在回收的状态了。

3.不要在dealloc中调用其他方法,包括属性的存取方法。

 

在dealloc方法中只释放引用和解除监听

原文:http://www.cnblogs.com/liuziyu/p/4184693.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!