我在objective-c中遇到了一个对象没有被释放的问题。我很确定这是因为它被保留在某个地方,但我不知道在哪里(检查应该为 0 的 retainCount 返回 1)。我已经多次浏览了我的代码,但没有看到我没有发布的保留它的内容。甚至可能是我正在使用的框架中的错误。
你会如何处理这样的事情?我想也许你可以搜索内存并查看指向该对象的内容,从而更容易弄清楚为什么会这样,但我不太确定如何实现这一点。也许另一种解决方案?
我在objective-c中遇到了一个对象没有被释放的问题。我很确定这是因为它被保留在某个地方,但我不知道在哪里(检查应该为 0 的 retainCount 返回 1)。我已经多次浏览了我的代码,但没有看到我没有发布的保留它的内容。甚至可能是我正在使用的框架中的错误。
你会如何处理这样的事情?我想也许你可以搜索内存并查看指向该对象的内容,从而更容易弄清楚为什么会这样,但我不太确定如何实现这一点。也许另一种解决方案?
Instruments很棒,并且可以在泄漏的对象被泄漏时拾取它们,但是在这种情况下,我建议您首先使用Xcode 静态分析器,它是 Xcode 3.2 中带有 Snow Leopard 的新功能。(如果你在 Leopard 上,你可以使用命令行版本。)静态分析可以让你在不执行代码的情况下发现很多问题,而且在很多情况下比 Instruments 更容易使用。
你试过仪器吗?
覆盖 -retain 和 -release,然后设置断点以查看谁在调用它们。