UIView被保留

时间:2010-10-05 09:57:56

标签: objective-c memory-leaks uiview uiviewcontroller retain

我在追踪为什么我的UIView没有解除分配时遇到了真正的问题。

我有一个带有几个UIView的UIViewController,所有这些都是保留的IBOutlet属性。

我肯定会在UIViewController的dealloc方法中发布UIView。然而我的UIView的dealloc从未被调用过。我不知道还有什么保留了UIView。

我的UIViewController中的所有其他UIView dealloc都很好,只是这个没有。

有没有人有任何好的技巧来追踪可能导致这种情况的原因?

此致 富

2 个答案:

答案 0 :(得分:2)

我首先进入仪器应用程序并选择“泄漏”配置文件。选择您的应用程序并运行它以检测泄漏。

当它检测到您的泄漏时,请按泄漏对象的内存地址(您的UIView)单击详细指示器。在这里,您将看到您的UIView被分配,保留和释放,以及哪个函数调用。

有一个很好的WWDC视频标题为“会话311 - 使用乐器进行高级内存分析”,如果你想观看它,它们会深入讨论它。

答案 1 :(得分:1)

请务必阅读Apple的“内存管理编程指南”中的Memory Management of Nib Objects。它描述了如何正确声明IBOutlets以及何时以及如何在视图控制器中释放它们。

简短版本:您应该在ViewDidUnload中将IBOutlet属性设置为nil。

如果这没有帮助,您可以尝试运行Leaks Instruments工具,看看它是否可以找到您泄漏视图的位置。