2

我正在检查 Instruments 中的泄漏,我已经设置为每秒检查一次,但没有出现泄漏。

我确定我的应用程序中一定有一些,有什么可以阻止这些出现吗?有没有一种好方法可以创建泄漏,以便我可以测试泄漏是否确实出现在 Instruments 中?

谢谢!

4

3 回答 3

3

创建泄漏很容易:

id someObject = [[NSObject alloc] init];
someObject = nil;

将一些类似的代码放入您的应用程序中,您肯定会在 Instruments 中看到泄漏。

于 2009-06-29T00:00:08.743 回答
1

如果对象已分配但不再被引用,您只会使用工具查找泄漏。另一种类型的“泄漏”是对您不打算这样做的东西的引用。这通常发生在像哈希表或字典这样的集合中,其中键/值对留在程序员忘记的集合中。

于 2009-06-29T03:41:23.447 回答
1

我很确定正如 clemahieu 所假设的那样,您真正看到的是过度保留的对象 - 您认为您已经释放了它们,但它们仍然被保留。

对此的一项快速健全性检查是在 dealloc 中设置断点并查看您希望被释放的类是否真的是。

您还可以使用内存跟踪工具(不是泄漏)来查看仍然存在哪些内存 - 只需确保选择“已创建且仍然存在”选项即可查看仍然存在哪些对象。

于 2009-06-29T05:48:53.250 回答