viewDidUnload和dealloc的理解
来源:互联网 发布:java web开发书籍推荐 编辑:程序博客网 时间:2024/05/21 07:25
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执行。
- viewDidUnload和dealloc的理解
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload和dealloc的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- viewDidUnload 和 dealloc 的区别
- shell程序设计
- mysql不允许远程连接
- 初探Nginx架构之进程模型与事件处理机制
- oracle script:查看没有索引的外键
- json异常处理org.json.JSONException: No value for XXX
- viewDidUnload和dealloc的理解
- rails 4.0.0 rails bootstrap
- artDialog双击会关闭对话框
- UNIX网络编程,时间获取服务器的搭建,程序运行
- 使用 PyInstaller 把python程序 .py转为 .exe 可执行程序
- VS2010+VMWare 远程调试exe程序的配置总结
- Oracle迁移到PostgreSQL的一些经验
- 哈佛气质课
- 【Java工程师之路】[2-4.3]OCI方式访问Oracle数据库