NSAutoreleasepool泄漏 - 不明白为什么?

时间:2011-06-17 02:13:50

标签: iphone objective-c multithreading ios nsautoreleasepool

我有这段代码:

NSNumber *num;
NSAutoreleasePool *apool = [[NSAutoreleasePool alloc] init];

for (int i=0; i<images_count; i++) {
    num = [NSNumber numberWithInt:images_count];
    [self performSelectorInBackground:@selector(loadData:) withObject:num];
}

[apool release];
[num release];

并生成以下错误:

2011-06-17 03:10:3​​0.768 CHARLIE [2456:6c03] * __NSAutoreleaseNoPool():类__NSArrayI的对象0x703d0f0自动释放,没有池到位 - 只是泄漏

我不明白为什么会泄漏,有​​人可以解释一下如何解决这个问题吗?

非常感谢,

杰克

1 个答案:

答案 0 :(得分:7)

该代码存在一些问题。

  • 缺少自动释放池可能是由于loadData:方法在没有自动释放池的情况下运行。

  • [num release]是无稽之谈。

  • 每次迭代该循环产生一个线程几乎可以保证是并行化图像加载的最低性能方法。