1

我在objective-c中遇到了一个对象没有被释放的问题。我很确定这是因为它被保留在某个地方,但我不知道在哪里(检查应该为 0 的 retainCount 返回 1)。我已经多次浏览了我的代码,但没有看到我没有发布的保留它的内容。甚至可能是我正在使用的框架中的错误。

你会如何处理这样的事情?我想也许你可以搜索内存并查看指向该对象的内容,从而更容易弄清楚为什么会这样,但我不太确定如何实现这一点。也许另一种解决方案?

4

3 回答 3

8

Instruments很棒,并且可以在泄漏的对象被泄漏时拾取它们,但是在这种情况下,我建议您首先使用Xcode 静态分析器,它是 Xcode 3.2 中带有 Snow Leopard 的新功能。(如果你在 Leopard 上,你可以使用命令行版本。)静态分析可以让你在不执行代码的情况下发现很多问题,而且在很多情况下比 Instruments 更容易使用。

于 2009-09-21T17:07:01.623 回答
5

你试过仪器吗?

于 2009-09-21T16:42:39.250 回答
2

覆盖 -retain 和 -release,然后设置断点以查看谁在调用它们。

于 2009-09-21T16:45:13.663 回答