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执行。
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执行。
相关文章推荐
- IOS dealloc
- IOS开发(48)之由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系说起
- IOS中的ViewController 的loadView、viewDidLoad、viewDidUnload
- 在 ARC 环境下使用 dealloc
- 【Objective-C】OC中的Dealloc方法详解
- 【Objective-C】OC中的Dealloc方法详解
- Object-C 构造函数 (init,initWithXXX) 析构函数(dealloc) initialize
- iOS dealloc 不执行或延迟执行的问题
- [编写高质量iOS代码的52个有效方法](七)内存管理(上)
- retain的循环引用注意以及@class的使用
- 关于OC内存管理-03
- 三十一 Swift3.0之 析构方法
- iOS 控制器POP后dealloc方法不走,通知监听无法移除的问题
- Dealloc 时取 weak self 时崩溃
- oc——NSObject——create copy dealloc
- iOS pop 了为什么不走dealloc方法
- Objective-C:dealloc、组合与聚合
- iOS dealloc方法没有调用
- 自动释放池的工作流程
- index++和index+1严重区别