NSThread和内存管理

时间:2010-04-26 14:32:32

标签: cocoa nsthread

想象一下,我使用detachNewThreadSelector:toTarget:withObject:创建并执行NSThread对象。线程执行的方法可能如下所示:

- (void)search {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    // perform a lengthy search here.

    [pool release];
}

然后我可能会在池被释放之前使用cancel方法在线程运行时终止线程。 NSAutoreleasePool对象会发生什么?我想它会泄漏,不是吗?

2 个答案:

答案 0 :(得分:2)

-(void)cancel不会强制取消,它只是要求取消。您的-(void)search将完成。有关详细信息,请阅读“Responding to the Cancel Command”。

答案 1 :(得分:1)

我强烈推荐NSOperationQueue用于简单的并发任务。