我正在检查 Instruments 中的泄漏,我已经设置为每秒检查一次,但没有出现泄漏。
我确定我的应用程序中一定有一些,有什么可以阻止这些出现吗?有没有一种好方法可以创建泄漏,以便我可以测试泄漏是否确实出现在 Instruments 中?
谢谢!
我正在检查 Instruments 中的泄漏,我已经设置为每秒检查一次,但没有出现泄漏。
我确定我的应用程序中一定有一些,有什么可以阻止这些出现吗?有没有一种好方法可以创建泄漏,以便我可以测试泄漏是否确实出现在 Instruments 中?
谢谢!
创建泄漏很容易:
id someObject = [[NSObject alloc] init];
someObject = nil;
将一些类似的代码放入您的应用程序中,您肯定会在 Instruments 中看到泄漏。
如果对象已分配但不再被引用,您只会使用工具查找泄漏。另一种类型的“泄漏”是对您不打算这样做的东西的引用。这通常发生在像哈希表或字典这样的集合中,其中键/值对留在程序员忘记的集合中。
我很确定正如 clemahieu 所假设的那样,您真正看到的是过度保留的对象 - 您认为您已经释放了它们,但它们仍然被保留。
对此的一项快速健全性检查是在 dealloc 中设置断点并查看您希望被释放的类是否真的是。
您还可以使用内存跟踪工具(不是泄漏)来查看仍然存在哪些内存 - 只需确保选择“已创建且仍然存在”选项即可查看仍然存在哪些对象。