1

试图找出某些设备崩溃的原因。我注意到我的视图控制器正在接收didReceiveMemoryWarning,但不是viewDidUnload。根据苹果的说法:

您不会使用 didReceiveMemoryWarning 来释放对视图对象的引用,您可能会使用它来释放您尚未在 viewDidUnload 方法中释放的任何与视图相关的数据结构。(视图对象本身应始终在 viewDidUnload 方法中释放。)

所以,

- 答:为什么viewDidUnload不叫?如果从不调用它,我无法在此处删除我的视图对象。

B:如果我不应该删除 中的视图对象didReceiveMemoryWarning,我还能在哪里执行此操作?

C: 使用 ARC,我还需要删除视图对象、将数组设置为 nil 等吗?

4

3 回答 3

2

正如另一个提到viewDidUnload:的在 iOS 6 中已弃用。但作为附加信息,您应该知道,很少需要卸载 a,UIView因为 iOS 6 在后台执行其神奇的事情 - 它正在破坏CALayer视图支持的位图层(这是迄今为止最大的“部分” a UIView)。如果再次需要该视图,iOS 将调用drawRect:您在哪里编写视图,一切都会好起来的。

有关更多信息,请阅读 Joe Conway 的这篇精彩文章:iOS 6 中的 ViewController 生命周期

于 2012-10-10T13:57:00.267 回答
1

viewDidUnload在 iOS6 中已弃用。如果您认为有必要,您“可以”删除视图didReceiveMemoryWarning,但这取决于您。

该线程也可能有所帮助。

ios6 中不再调用 viewDidUnload

于 2012-10-09T04:56:06.440 回答
0

didReceiveMemoryWarning专门针对不卸载视图,而是让视图控制器释放可以轻松重新创建的对象(即 UIIamges 等)。除非可以根据需要轻松重新创建对象,否则不应释放视图中的对象。

于 2012-10-09T04:49:42.813 回答