使用iPhone SDK进行多线程处理

时间:2009-06-20 17:20:13

标签: iphone cocoa-touch multithreading

我正在为我的线程使用单独的NSAutoReleasePool

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
[self bulkyFunction]; // time consuming op
[self performSelectorOnMainThread: @selector(doneAll) withObject:nil waitUntilDone:NO];
[pool release];

我调用了一个分配两个字符串的函数(bulkyFunction)。

    currentTitle = [[NSMutableString alloc]init];
    currentSummary = [[NSMutableString alloc]init];

我在使用后释放它们。

定期调用此线程。但是当它第二次被调用时,访问currentTitle会崩溃。

是因为我的[pool release]语句释放了[currentTitle release]语句已经发布的currentTitle吗? 因为,如果[currentTitle release]被注释掉了,那就没问题了。但我担心内存泄漏。

请建议。

1 个答案:

答案 0 :(得分:4)

除非致电[pool release],否则

currentTitle不会发布[currentTitle autorelease] 某处。我认为,如果您发布了bulkyFunction的完整内容,那将会很有帮助。