控制器有两个已经废除的方法:
viewWillUnload与viewDidUnload方法:
/**
* 控制器的View即将销毁的时候调用
*/
- (void)viewWillUnload{
[super viewWillUnload];
}
/**
* 控制器的View已经销毁的时候调用
*/
- (void)viewDidUnload{
[super viewDidUnload];
}
在收到内存警告时,应该从没有显示的视图开始销毁,销毁过程中会先调用viewWillUnload,销毁视图,再调用viewDidUnload方法:
在非ARC状态下,应该在viewDidUnload方法把所有属性进行清空,ARC与非ARC通用的写法:self.xxx = nil;相当于[self.xxx release];
原因:
set方法在非ARC中会写成
- (void)setXxx:(Xxx *)xxx{
if( _xxx != xxx ){
[_xxx release];
_xxx = [xxx retain];
}
}
传入一个nil,对nil进行retain是无效的,只是调用了[self.xxx release],因此使用self.xxx = nil是较好的写法。
完整的生命周期循环为: