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

非常感谢您的帮助。

4

2 回答 2

1

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

于 2012-09-17T13:18:47.317 回答
0

在网上阅读了很多文章并在 stackoverflow.com 上解决了类似的问题后,我得出了以下理解:

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

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

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

  • 它与ARC无关。将属性设置为 nil 仅意味着该属性不再保留任何内存位置的引用。

每次我对它有更多了解时,我都会继续更新这个答案。

谢谢。

于 2012-09-17T14:49:37.147 回答