-
对象在经历其生命周期后,执行dealloc方法,会为系统回收。
-
在每个对象的生命期内,dealloc方法仅执行一次。
-
你绝不应该自己调用dealloc方法。
-
运行期系统会在适当的时候调用dealloc方法。
-
不要在dealloc方法中随便调用其他方法。
-
在dealloc里不要调用属性的存取方法。
//ARC模式下的内存管理
- (void)dealloc{
CFRelease(coreFoundationObject);
self.xxx = nil;
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
要点
-
在dealloc方法里,应该做的事情就是释放指向其他对象的引用,并取消原来订阅的“键值观测”(KVO)或NSNotificationCenter等通知,不要做其他事情。
-
如果对象持有文件描述符等系统资源,那么应该专门编写一个方法来释放此种资源。这样的类要和其他使用约定:用完资源后必须调用close方法。
-
执行异步任务的方法不应再dealloc里调用;只能在正常状态下执行的那些方法也不应在dealloc里调用,因为此时对象已处于正在回收的状态了。
网友评论