首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确使用NSInvocationOperation和NSOperationQueue

正确使用NSInvocationOperation和NSOperationQueue
EN

Stack Overflow用户
提问于 2009-08-31 18:44:05
回答 3查看 3.2K关注 0票数 0

我已经设置了一个操作队列和一个调用操作。我是否需要发信号通知调用是逗号的?如果不是,操作队列如何知道调用已完成并继续执行下一个调用?已将操作队列设置为一次执行一个操作。

EN

回答 3

Stack Overflow用户

发布于 2009-08-31 20:36:53

不,不需要发出调用已完成的信号。当其isFinished属性设置为YES时,NSOperationQueue知道操作已完成。默认情况下,当操作的-main方法返回时,就会发生这种情况。

实际上,NSInvocationOperation的-main方法只是调用它的NSInvocation并返回,因此在调用完成后,它的isFinished标志应该立即设置为YES。

票数 3
EN

Stack Overflow用户

发布于 2009-08-31 23:55:34

布恩,

看起来您真正想要的是自己继承NSOperation的子类,并在其中调用您的异步。当异步代码完成并且您得到回调时,您将通过KVO通知队列isExecuting和isFinished已更新。这在Dave Dribin的博客上有更详细的解释:

http://www.dribin.org/dave/blog/archives/2009/05/05/concurrent_operations/

票数 1
EN

Stack Overflow用户

发布于 2009-11-17 05:28:49

这对于NSInvocationOperation来说是自动的。你已经可以走了。

如果您需要通知应用程序的其他部分该操作已完成,您可以使用通知。确保通知发送到正确的线程。在iPhone上,我将它们发送到主线程,因为我经常更改UI以响应通知,并且所有UI内容都必须发生在主线程上。

代码语言:javascript
复制
[self performSelectorOnMainThread:@selector(postOpDoneNote) withObject:nil waitUntilDone:NO];

-(void) postOpDoneNote
{
    [[NSNotificationCenter defaultCenter] postNotificationName:@"someOpDone" object:self];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1358824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档