尝试寻找某些设备崩溃的原因。我注意到我的视图控制器正在接收didReceiveMemoryWarning
,但不是viewDidUnload
。根据Apple的说法:
您不会使用didReceiveMemoryWarning来释放对视图对象的引用,您可以使用它来释放您在viewDidUnload方法中尚未发布的任何与视图相关的数据结构。 (视图对象本身应始终在viewDidUnload方法中释放。)
所以,
答:为什么没有调用viewDidUnload
?如果从未调用过我的视图对象,我无法将其删除。
B:如果我不打算在didReceiveMemoryWarning
删除我的视图对象,我还能在哪里删除它?
C:使用ARC,我是否还需要删除视图对象,将数组设置为nil等?
答案 0 :(得分:2)
正如其他提到的viewDidUnload:
在iOS 6中已被弃用。但作为您应该知道的其他信息,由于iOS 6在后台执行其神奇的事情,因此很少需要卸载UIView
-it正在销毁视图的后备CALayer
的位图图层(这是迄今为止UIView
的最大“部分”)。如果再次需要该视图,iOS将会在您撰写视图的地方调用drawRect:
,一切都会正常。
欲了解更多信息,请阅读Joe Conway的这篇精彩文章:ViewController lifecycle in iOS 6
答案 1 :(得分:1)
viewDidUnload
。如果您认为有必要,可以“删除didReceiveMemoryWarning
中的观看次数,但这取决于您。”
此主题也可能有所帮助。
答案 2 :(得分:0)
didReceiveMemoryWarning
专门针对视图的卸载,而不是视图控制器释放可以轻松重新创建的对象(即UIIamges等)。除非可以根据需要轻松地重新创建对象,否则不应在视图中释放对象。