NSThread and memory management
Imagine I create and execute an NSThread object using detachNewThreadSelector:toTarget:withObject:
. The method executed by the thread might look like this:
- (void)search {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// perform a lengthy search here.
[pool release];
}
I then might use the ca开发者_开发问答ncel
method to kill the thread while it's running, before the pool gets released. What happens to the NSAutoreleasePool object? I suppose it will leak, won't it?
-(void)cancel
doesn't force cancellation, it merely requests it. Your -(void)search
will run to completion. Read "Responding to the Cancel Command" for details.
I highly recommend NSOperationQueue for simple concurrent tasks.
精彩评论