viewDidUnload和dealloc的理解

本文详细解释了iOS应用中viewDidUnload和dealloc方法的作用与区别。viewDidUnload用于响应内存警告时卸载非必要视图资源,而dealloc则是在viewController被销毁时清理资源。文章还深入探讨了如何正确地释放IBOutlet绑定的对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值