我已经设置了一个操作队列和一个调用操作。我是否需要发信号通知调用是逗号的?如果不是,操作队列如何知道调用已完成并继续执行下一个调用?已将操作队列设置为一次执行一个操作。
发布于 2009-08-31 20:36:53
不,不需要发出调用已完成的信号。当其isFinished属性设置为YES时,NSOperationQueue知道操作已完成。默认情况下,当操作的-main方法返回时,就会发生这种情况。
实际上,NSInvocationOperation的-main方法只是调用它的NSInvocation并返回,因此在调用完成后,它的isFinished标志应该立即设置为YES。
发布于 2009-08-31 23:55:34
布恩,
看起来您真正想要的是自己继承NSOperation的子类,并在其中调用您的异步。当异步代码完成并且您得到回调时,您将通过KVO通知队列isExecuting和isFinished已更新。这在Dave Dribin的博客上有更详细的解释:
http://www.dribin.org/dave/blog/archives/2009/05/05/concurrent_operations/
发布于 2009-11-17 05:28:49
这对于NSInvocationOperation来说是自动的。你已经可以走了。
如果您需要通知应用程序的其他部分该操作已完成,您可以使用通知。确保通知发送到正确的线程。在iPhone上,我将它们发送到主线程,因为我经常更改UI以响应通知,并且所有UI内容都必须发生在主线程上。
[self performSelectorOnMainThread:@selector(postOpDoneNote) withObject:nil waitUntilDone:NO];
-(void) postOpDoneNote
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"someOpDone" object:self];
}https://stackoverflow.com/questions/1358824
复制相似问题