- 在这两个方面(即使用 ARC 或不使用 ARC )将属性设置为
nil
in有什么意义?viewDidUnload
- 仅在以下情况下才重要
IBOulets
吗?我们不需要将其他属性(不是IBOulets
)设置为nil
吗? - 如果我不这样做会有什么后果?我之前没有设置它们
nil
,也没有观察到任何后果。
非常感谢您的帮助。
nil
in有什么意义?viewDidUnload
IBOulets
吗?我们不需要将其他属性(不是IBOulets
)设置为nil
吗?nil
,也没有观察到任何后果。非常感谢您的帮助。
在 viewDidUnload 中将 IBOutlets 设置为 nil 会告诉编译器在内存警告时释放出口。因为在内存警告时 ..viewDidUnload 和视图控制器的 didReceiveMemoryWarning 会被调用..通常在 ViewDidUnload 中 IBOutlets 设置为 nil 并且在 didReceiveMemoryWarning 属性或对象被释放.因此在这种情况下,内存被重新获得,因此您的应用程序可以继续运行,否则由于内存不足,连续池会导致崩溃
在网上阅读了很多文章并在 stackoverflow.com 上解决了类似的问题后,我得出了以下理解:
viewDidUnload
在内存不足的情况下由编译器调用。
我们应该在方法中将这些属性设置为 nil,这些属性正在重新实例化viewDidLoad
。几乎所有 IBOutlet 组件都属于该类别。所以最好在方法中将 IBOutlets 声明为 nil。不这样做会导致连续池化,并且将来可能会由于内存不足而导致崩溃(应用程序继续运行的时间)。
我还读到我们不应该将 NSString 之类的实例归零(可能导致崩溃),根据我的经验,这是正确的。但原因我不知道。
每次我对它有更多了解时,我都会继续更新这个答案。
谢谢。