iphone - 仪器内存泄漏与 ARC 混淆

标签 iphone objective-c memory-leaks automatic-ref-counting instruments

早上好,

我正在对我一直在开发的这个应用程序进行一些微调,只是为了确保一切运行顺利并且没有发生内存泄漏。因此,我使用 Instruments 运行我的应用程序,并选择了分配和泄漏工具。

我的应用程序运行得很好,直到 Insturments 检测到泄漏的对象,而该对象恰好是 UIImage。让我困惑的是我正在使用 ARC,所以我的理解是所有保留/释放/自动释放调用都被为我处理了。

让我困惑的另一件事是,当我看到泄漏的扩展详细信息时,它显示负责框架是 [UIImage imageWithCGImage:scale:orientation] 并且我从未在整个应用程序中调用该方法,而且我什至这样做了在我的工作区中搜索它但没有结果。

当我双击泄漏的对象以在 Xcode 中打开它时,它只是打开一个框架并显示“不可用”。截图如下:

Instruments screenshot

点击右侧的 Xcode Logo 也没有任何帮助。我一直在尝试调试这可能是什么,但它让我难住了。我确保 NSZombieEnabled 设置为 YES,以防万一我尝试使用已释放的对象,但我无法找到解决方案。为什么会发生这种情况(在 ARC 下),我该如何修复它?

谢谢

编辑:这是我掌握的泄漏的最新快照 This is the latest snapshot that I have for the leak

最佳答案

那么,泄漏可能源自框架内部的某个地方(UIKit 或更深层)。如果是这样,那么您对此无能为力。要么是应用程序内部的某种“副作用”,稍后会在 UIKit 内部深处出现([UIImage imageWithCGImage:scale:orientation]),要么是 UIKit 本身的一些问题。但最终很难确定!

使用 ARC 仍然不能保证 100% 无内存泄漏代码! ;)

关于iphone - 仪器内存泄漏与 ARC 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14123653/

相关文章:

ios - 如果有任何应用程序在后台运行,请调整大小

ios - UIImageView 无法显示图像

javascript - 带有 Socket.IO 1.0 的 NodeJS - 堆外的内存泄漏

javascript - postMessage 网络 worker 内存泄漏

iphone - WePay 支付网关在 IOS 中的集成

objective-c - 将图像发送到 AirPrint 的函数

ios - 如何检测该应用程序正在从 safari 重定向打开?

objective-c - 从主项目导入 constatnts 头文件到 Cocoa pod 文件

cocoa - OpenCV NSImage 到 IplImage 转换器过程中的泄漏

iphone - 在 iOS7 中测试的 UINavigationBar 设置 tintcolor 不起作用?