控制器有两个已经废除的方法:
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是较好的写法。
完整的生命周期循环为: