美文网首页
第31条:在dealloc方法中只释放引用并解除监听

第31条:在dealloc方法中只释放引用并解除监听

作者: MrSYLong | 来源:发表于2018-10-03 16:52 被阅读9次

    对象在完成生命期后,要调用dealloc方法,但具体何时执行,无法保证。

    我们不应该自己调用dealloc方法,运行期系统会在适当的时候调用它。

    我们能够通过人工观察保留与释放操作的位置,来预测此方法何时即将执行,但实际上,程序库会以开发者察觉不到的方式操作对象,从而使回收对象的真正时机和预期的不同。

    在dealloc方法中做些什么:

    • 释放对象所拥有的引用。
    • 对象所拥有的非Objective-C也要释放。
    • 把原理配置过的观测行为都清理掉

    开销较大或系统内稀缺的资源则不在dealloc中释放引用,需要实现另外一个方法实现对资源的释放,如:文件描述符、套接字、大块内存等。原因:

    • 保留稀缺资源到dealloc再释放时间较长。
    • 系统并不能保证每个创建出来的对象的dealloc都会执行。

    执行异步任务的方法、只能在正常状态下执行的方法都不应该在dealloc里调用,因为对象已处于正在回收的状态了。

    相关文章

      网友评论

          本文标题:第31条:在dealloc方法中只释放引用并解除监听

          本文链接:https://www.haomeiwen.com/subject/byozoftx.html