我在追踪为什么我的UIView没有解除分配时遇到了真正的问题。
我有一个带有几个UIView的UIViewController,所有这些都是保留的IBOutlet属性。
我肯定会在UIViewController的dealloc方法中发布UIView。然而我的UIView的dealloc从未被调用过。我不知道还有什么保留了UIView。
我的UIViewController中的所有其他UIView dealloc都很好,只是这个没有。
有没有人有任何好的技巧来追踪可能导致这种情况的原因?
此致 富
答案 0 :(得分:2)
我首先进入仪器应用程序并选择“泄漏”配置文件。选择您的应用程序并运行它以检测泄漏。
当它检测到您的泄漏时,请按泄漏对象的内存地址(您的UIView)单击详细指示器。在这里,您将看到您的UIView被分配,保留和释放,以及哪个函数调用。
有一个很好的WWDC视频标题为“会话311 - 使用乐器进行高级内存分析”,如果你想观看它,它们会深入讨论它。
答案 1 :(得分:1)
请务必阅读Apple的“内存管理编程指南”中的Memory Management of Nib Objects。它描述了如何正确声明IBOutlets以及何时以及如何在视图控制器中释放它们。
简短版本:您应该在ViewDidUnload
中将IBOutlet属性设置为nil。
如果这没有帮助,您可以尝试运行Leaks Instruments工具,看看它是否可以找到您泄漏视图的位置。