意义/需要在viewDidUnload中将属性设置为nil

时间:2012-09-17 12:36:36

标签: iphone memory-management properties null significance

  • 在两个方面(即使用ARC或没有ARC)将属性设置为nil的重要性是什么意义?
  • 只有在viewDidUnload的情况下才有意义吗?我们不需要将其他属性(不是IBOulets)设置为IBOulets吗?
  • 如果我不这样做会有什么后果?我之前没有设置它们nil并且没有观察到任何后果。

非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

在viewDidUnload中将IBOutlets设置为nil告诉编译器在内存警告上释放出口。因为内存警告..viewDidUnload和视图控制器的didReceiveMemoryWarning被调用..通常在ViewDidUnload中,IBOutlets被设置为nil和didReceiveMemoryWarning属性或者对象被释放。在这种情况下,内存重新获得,因此您的应用程序可以继续运行,否则连续池化会导致内存不足导致崩溃

答案 1 :(得分:0)

在网上阅读了很多文章并在stackoverflow.com上经历了类似的问题后,我达成了以下理解:

    编译器在内存不足的情况下调用
  • viewDidUnload

  • 我们应该在方法中将这些属性设置为nil,这些属性在viewDidLoad中重新实现。几乎所有IBOutlet组件都属于该类别。因此,我们更好地将IBOutlets声明为方法中的nil。如果不这样做会导致持续池化,并可能导致未来因内存不足而导致崩溃(时间,应用程序继续运行)。

  • 我还读到我们不应该像NSString那样忽略类的实例(可能导致崩溃),这根据我的经验是正确的。但原因我不知道。

  • 没有什么可以处理ARC。将属性设置为nil只是意味着该属性不再保留任何内存位置的引用。

每当我开始了解更多相关信息时,我会不断更新这个答案。

感谢。