1

我想我有一个 UIImage 的保留计数比它应该有的要高,而且我可能正在泄漏内存。我将此图像用作缩略图,为 uibutton 设置自定义背景。所以 uibutton 持有对它的引用,我也是如此。但是,retainCount 不是 2,而是 3。如果我想在那里放置日志消息,然后将使用的类从 UIImage 更改为我的类,我是否必须创建一个自定义 UIImage 派生类并覆盖 dealloc,或者是否有更简单的方法. 提前致谢。

4

3 回答 3

2

使用目标类上的类别来覆盖 dealloc 并在其上设置断点。

http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocCategories.html

于 2010-06-17T11:00:24.147 回答
1

我建议你使用 Instruments 中的“Leaks”工具。它会告诉您是否有泄漏,并为您提供所需的所有信息。

更新:

我刚刚观看了 WWDC 2010 视频“Future Proofing your Application”,Apple 工程师在该视频中指出,OS 2.x 上[UIImage imageNamed:]实际上泄漏的保留计数比应有的多 1。因此,如果您的设备运行的是 iPhone OS 2.x,那么这就是原因!

于 2010-06-17T10:38:27.827 回答
1

知道物体在泄漏吗?根据保留计数得出结论几乎总是一个坏主意。使用构建和分析、泄漏等来确定您是否有问题。

如果你真的想要 subclass 和 log dealloc,你可以,但它实际上会告诉你什么?

于 2010-06-17T10:44:06.183 回答