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

  • 对象在经历其生命周期后,执行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方法中只释放引用并解除监听)