您的位置:首页 > 其它

viewDidUnload和dealloc的理解

2013-11-12 14:15 369 查看
1,viewDidUnload是当view被卸载以后执行的语句,与viewDidLoad相对。

self.myOutBlet = nil;

    它不能手动调用,是当应用程序接收到手机内存警告的时候执行的方法。目的是清空除当前viewController以外其他所有的已经加载过的viewController里面的暂时不在使用的一些控件或数据,避免应用程序消耗内存过多而被强制关闭。

   是除当前正在展示的view所属的viewController以外已经在内存里面的viewController执行viewDidUnload方法,而不是当前的viewController去执行,当然这些viewController不会被dealloc掉。。

  为什么要写成self.myOutBlet = nil?

它干了两件事:实际上是执行了property的setter方法。一是将老数据release掉,二是新数据nil retain(如果property设置属性为retain),对nil retain虽然没有意义。如果直接myOutBlet = nil;则会造成内存泄露,因为老数据没有release掉。如果写成[myOutBlet release];则当view被dealloc的时候也会被release掉,程序就出错了,而对nil release是没问题的。

2,dealloc是当前viewController被释放的时候,清空所有当前viewController里面的实体和数据来释放内存、自动调用,无需手动执行。

 比如当modleView被dismissModalViewControllerAnimated或者navigationController回到上一页的时候,这个方法会被自动调用。

3,两者区别:viewDidUnload是除当前以外内存里所有viewController同时执行,而dealloc是当前contrller执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vieDidUnload dealloc