NSThread和内存管理
想象一下,我使用 detachNewThreadSelector:toTarget:withObject: 创建并执行一个 NSThread 对象。线程执行的方法可能如下所示:
- (void)search {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// perform a lengthy search here.
[pool release];
}
然后,在释放池之前,我可能会使用 cancel
方法在线程运行时终止该线程。 NSAutoreleasePool 对象会发生什么?我想它会泄漏,不是吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
-(void)cancel
不会强制取消,它只是请求取消。您的-(void)search
将运行直至完成。阅读“响应取消命令”了解详细信息。-(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.我强烈推荐 NSOperationQueue 来执行简单的并发任务。
I highly recommend NSOperationQueue for simple concurrent tasks.