(三十五)控制器的生命周期循环

控制器有两个已经废除的方法:

viewWillUnload与viewDidUnload方法:

/**
 *  控制器的View即将销毁的时候调用
 */
- (void)viewWillUnload{
    [super viewWillUnload];
}
/**
 *  控制器的View已经销毁的时候调用
 */
- (void)viewDidUnload{
    [super viewDidUnload];
}


收到内存警告的顺序:AppDelegate->UIWindow->UIViewController。

在收到内存警告时,应该从没有显示的视图开始销毁,销毁过程中会先调用viewWillUnload,销毁视图,再调用viewDidUnload方法:

(三十五)控制器的生命周期循环_第1张图片


在非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是较好的写法。

完整的生命周期循环为:

(三十五)控制器的生命周期循环_第2张图片

你可能感兴趣的:(ios,生命周期,内存警告)