美文网首页编写高质量代码的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