Instruments报告了__NSOperationInternal内存泄漏问题

3

我有一个类,它是NSOperation的子类(实际上是ASIHTTPRequest的子类,而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个回答

2

我最终搞清楚了这个问题。

事实证明,在某些情况下我无意中调用了两次[super init],导致[NSOperation init]分配的对象泄漏。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接