我正在开发一个转换为 ARC 的 iPad 应用程序。应用程序适用于 os >= ios 5.0。所以我的疑问是,我该如何管理 viewOutlets?我使用 -(void)didReceivememoryWarning 将 ViewOutlets 设置为 nil。但在 ios 5.0 和 5.1 应用程序中显示大量内存泄漏。由于 -(void)viewDidUnload 在 ios 6.0 中已弃用,因此我在应用程序中没有使用相同的。管理网点的方法正确吗?请给我一个快速的答复。
2 回答
ARC(自动引用计数)功能在 iOS 5 及更高版本(iOS 6 等)中可用。
When you are using ARC unable in your project, you dont need to `manually release any object` that you have allocated for your stuff.
ARC will automatic handle this one.so it will beneficial for `Memory Management`.
Hope ,You understand what i m trying to say.
有关更多说明,请参阅以下链接: To ARC or not to ARC?优缺点都有什么? ARC,值得与否?
Good Luck !!!
iOS 5 和 iOS 6 的编码方式没有区别。
如果你遇到问题,那是因为你不明白什么viewDidUnload
时候调用它。
viewDidUnload
在卸载控制器的视图时调用。在 iOS 6 中,视图永远不会被卸载。在 iOS 5 及之前的版本中,视图也几乎从不卸载。所以在这两种情况下,几乎viewDidUnload
都不会被调用。
如果你的程序泄漏了东西,那是因为你没有释放东西。您总是需要在dealloc
. 我怀疑这是你的问题。
当控制器的视图被卸载时(这只发生在 iOS 5 和之前的版本中,但这无关紧要),viewDidUnload
允许您有选择地丢弃一些资源以节省内存,只要它们是在加载视图时将重新创建的资源再次。这通常包括作为出口的属性和实例变量(因为加载视图时,它将再次加载 Xib 并将出口重新连接到新对象),以及在viewDidLoad
.
如果你的程序编码正确,我可以进去删除viewDidUnload
,它不会对程序的正确性产生任何影响。(因为viewDidUnload
几乎从来没有被调用过。)
您几乎不必使用didReceiveMemoryWarning
任何一种。