我已经设置了一个操作队列和一个调用操作。我是否需要表明调用已完成?如果不是,操作队列将如何知道调用已完成并继续下一个调用?操作队列已设置为一次执行一个操作。
答案 0 :(得分:3)
不,没有必要发出调用已完成的信号。当N isFinished
属性设置为YES时,NSOperationQueue知道操作已完成。默认情况下,当操作的-main
方法返回时会发生这种情况。
NSInvocationOperation的-main
方法,出于所有意图和目的,只需调用其NSInvocation并返回,因此在调用完成后应立即将其isFinished
标志设置为YES。
答案 1 :(得分:1)
文,
看起来你真正想要的是自己子类化NSOperation并在其中调用异步。当异步代码完成并且您获得回调时,您将通过KVO通知队列isExecuting并更新isFinished。在Dave Dribin的博客中详细解释了这一点:
http://www.dribin.org/dave/blog/archives/2009/05/05/concurrent_operations/
答案 2 :(得分:0)
NSInvocationOperation是自动的。你已经很好了。
如果您需要告知应用的其他部分操作已完成,您可以使用通知。确保通知转到正确的主题。在iPhone上,我将它们发送到主线程,因为我经常更改UI以响应通知,并且所有UI内容必须在主线程上发生。
[self performSelectorOnMainThread:@selector(postOpDoneNote) withObject:nil waitUntilDone:NO];
-(void) postOpDoneNote
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"someOpDone" object:self];
}