dealloc方法中主要做什么?主要是释放对象所拥有的引用,也就是把所有的Objective-C对象都释放掉。ARC会通过自动生成的.cxx_destruct方法在dealloc中为你自动添加这些释放代码。对象所拥有得其他非Objective-C对象也要释放。比如CoreFoundation对象就必须手工释放。
在dealloc方法中,通常还要做一件事,那就是吧原来配置过的观测行为(observation behavior)都清理掉。
dealloc方法可以这样写:
- (void)dealloc
{//arc模式下
CFRelease(coreFoundationObject);
[[NSNotifacationCenter defaultCenter] removeObserver:self] ;
}
如果使用手动引用计数而非arc的话,那么最后还需调用 [super dealloc]
若执行手动管理,则还需要将当前对象所拥有的全部Objective-C对象逐个释放。
在iOS应用程序所对应的application delegate中,都含有一个会于程序终止时调用的方法。如果一定要清理某些对象,那么可在此方法中调用哪些对象的清理方法。
比如:
- (void)applicationWillTerminate:(UIApplication *)application;