__NSOperation仪器报告内泄漏

时间:2011-05-11 16:24:39

标签: 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];
}

我无法在任何可能导致此问题的代码中看到错误。这可能是一个错误的泄漏,或者有人知道代码可能出现什么问题? (是否有任何指导方针可以判断仪器报告的泄漏是否为假?)

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

1 个答案:

答案 0 :(得分:2)

我最终成功了解了这一点。

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