objective-c - __NSOperationInstruments 报告内部泄漏

标签 objective-c ios memory-leaks instruments

我有一个类是 NSOperation 的子类(实际上是 ASIHTTPRequest 的子类,它是 NSOperation 的子类)。

Instruments 报告 __NSOperationInternal 内存泄漏,调用堆栈如下:

   0 libSystem.B.dylib calloc
   1 libobjc.A.dylib _internal_class_createInstanceFromZone
   2 libobjc.A.dylib class_createInstance
   3 CoreFoundation +[NSObject(NSObject) allocWithZone:]
   4 CoreFoundation +[NSObject(NSObject) alloc]
   5 CoreFoundation +[NSObject(NSObject) new]
   6 Foundation -[NSOperation init]
   7 MyApp -[JSONRequest init] JSONRequest.m:26

JSONRequest 的 init 和 dealloc 看起来像这样:

- (id)init
{
    if ((self = [super init]))
    {
        [self setDidFinishSelector:@selector(JSONFinished:)];
        [self setDidFailSelector:@selector(JSONLoadFailed:)];
    }
    return self;
}

- (void)dealloc {
    [super setDelegate:nil];
    [super dealloc];
}

我在我的代码中看不到任何可能导致此问题的错误。这可能是错误的泄漏,还是有人知道代码可能有什么问题? (是否有任何准则可以判断仪器报告的泄漏是否是错误的?)

这是唯一被报告的泄漏(即对象的所有属性都没有被泄漏)但是在我的应用程序运行期间多次报告此泄漏。

最佳答案

我最终设法弄清了这个问题。

事实证明,我在某些情况下不小心调用了 [super init] 两次,显然导致 [NSOperation init] 分配的对象被泄露。

关于objective-c - __NSOperationInstruments 报告内部泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5967538/

相关文章:

node.js - 部署到 Bluemix 的简单 node.js 应用程序似乎正在泄漏内存

ios - 在 PageViewController 中隐藏/显示特定 View Controller 的状态栏

ios - 提高 objective-c 中的搜索性能

objective-c - RestKit 映射 XML 元素主体

android - 哪些 Android 工具和方法最适合查找内存/资源泄漏?

c++ - 将 uint32_t 添加到不同命名空间中的队列时发生内存泄漏

iphone - 在 KeychainItemWrapper 中存储多个值

objective-c - Cocoa 2D 图形 : Quartz, 核心图像或核心动画?

ios - 无法为 iOS Swift 运行 Google Calendar API 示例代码

ios - addUniqueObject 属性导致 xcode 中的编译器错误