读书人

viewDidUnload 跟 viewWillUnload 被废

发布时间: 2013-04-12 18:33:11 作者: rapoo

viewDidUnload 和 viewWillUnload 被废弃之后的内存警告处理
由于iOS6以上的UIKit不会在内存警告时自动释放视图,所以viewWillUnload和viewDidUnload将不再触发。
因此,在iOS6上,开发者需要负责内存警告时将不用到的视图释放。
WWDC2012的视频有提到,具体代码如下:

- (void)viewDidLoad{     self.subView.delegate = self;     [[NSNotificationCenter defaultCenter] addObserver:self];     self.viewCreatedByCode = [[UIView alloc] init];}// 自定义函数viewUnloaded,其操作与viewDidLoad对称。- (void)viewUnloaded{     self.subView.delegate = nil;     [[NSNotificationCenter defaultCenter] removeObserver:self];     self.viewCreatedByCode = nil;}- (void)didReceiveMemoryWarning {     if ([self isViewLoaded] && [self.view window] == nil) {          self.view = nil; // 需要开发者手动释放控制器的视图。          self.viewCreatedByNib = nil;  // 在xib中创建的视图也要手动清空。          [self viewUnloaded]; // 视图已被卸载,调用viewDIdLoad的反操作。     }} - (void)dealloc{     if ([self isViewLoaded]) {          [self viewUnloaded]; // 如果视图已被加载,说明viewDidLoad被调用过,所以调用viewDIdLoad的反操作。     }}

读书人网 >移动开发

热点推荐