美文网首页编写高质量代码的52个有效方法
52个有效方法(31) - 在dealloc方法中只释放引用并解

52个有效方法(31) - 在dealloc方法中只释放引用并解

作者: SkyMing一C | 来源:发表于2018-09-06 16:46 被阅读17次
    • 对象在经历其生命周期后,执行dealloc方法,会为系统回收。

    • 在每个对象的生命期内,dealloc方法仅执行一次。

    • 你绝不应该自己调用dealloc方法。

    • 运行期系统会在适当的时候调用dealloc方法。

    • 不要在dealloc方法中随便调用其他方法。

    • 在dealloc里不要调用属性的存取方法。

    //ARC模式下的内存管理
    - (void)dealloc{
        CFRelease(coreFoundationObject);
        self.xxx = nil;
        [[NSNotificationCenter defaultCenter] removeObserver:self];
    }
    
    要点
    1. 在dealloc方法里,应该做的事情就是释放指向其他对象的引用,并取消原来订阅的“键值观测”(KVO)或NSNotificationCenter等通知,不要做其他事情。

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

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

    相关文章

      网友评论

        本文标题:52个有效方法(31) - 在dealloc方法中只释放引用并解

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