dealloc方法中主要做什么称近?主要是釋放對(duì)象所擁有的引用,也就是把所有的Objective-C對(duì)象都釋放掉哮塞。ARC會(huì)通過(guò)自動(dòng)生成的.cxx_destruct方法在dealloc中為你自動(dòng)添加這些釋放代碼刨秆。對(duì)象所擁有得其他非Objective-C對(duì)象也要釋放。比如CoreFoundation對(duì)象就必須手工釋放忆畅。
在dealloc方法中衡未,通常還要做一件事,那就是吧原來(lái)配置過(guò)的觀測(cè)行為(observation behavior)都清理掉家凯。
dealloc方法可以這樣寫(xiě):
- (void)dealloc
{//arc模式下
CFRelease(coreFoundationObject);
[[NSNotifacationCenter defaultCenter] removeObserver:self] ;
}
如果使用手動(dòng)引用計(jì)數(shù)而非arc的話(huà)缓醋,那么最后還需調(diào)用 [super dealloc]
若執(zhí)行手動(dòng)管理,則還需要將當(dāng)前對(duì)象所擁有的全部Objective-C對(duì)象逐個(gè)釋放绊诲。
在iOS應(yīng)用程序所對(duì)應(yīng)的application delegate中送粱,都含有一個(gè)會(huì)于程序終止時(shí)調(diào)用的方法。如果一定要清理某些對(duì)象掂之,那么可在此方法中調(diào)用哪些對(duì)象的清理方法抗俄。
比如:
- (void)applicationWillTerminate:(UIApplication *)application;