0

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

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

我确定在 UIViewController 的 dealloc 方法中释放 UIView。但是我的 UIView 的 dealloc 永远不会被调用。我不知道还有什么保留了 UIView。

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

有没有人有任何好的技术来追踪可能造成这种情况的原因?

问候,丰富

4

2 回答 2

2

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

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

有一个很好的 WWDC 视频,标题为“Session 311 - Advanced Memory Analysis With Instruments”,如果您想观看,他们会深入了解它。

于 2010-10-05T16:27:27.093 回答
1

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

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

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

于 2010-10-05T10:04:22.937 回答