首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSOperation已完成

NSOperation已完成
EN

Stack Overflow用户
提问于 2011-07-22 18:53:04
回答 4查看 3.8K关注 0票数 3

我有一个在NSOperationQueue中运行的NSOperation。NSOperation下载一些数据并将其解析成NSDictionary。如何知道NSOperation何时完成并获取该字典?谢谢。

EN

回答 4

Stack Overflow用户

发布于 2011-07-22 19:03:44

您也可以使用NSOperation- (void)setCompletionBlock:

代码语言:javascript
复制
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
    NSLog(@"Doing something...");
}];

[operation setCompletionBlock:^{
    NSLog(@"Doing something once the operation has finished...");
}];

[queue addOperation:operation];

更详细的here

票数 6
EN

Stack Overflow用户

发布于 2015-10-09 10:24:51

如果需要知道操作何时完成的代码块本身就是一个NSOperation,那么您可以通过在它们之间建立依赖关系来优雅地处理它:

代码语言:javascript
复制
[laterOp addDependency:downloadAndParseOp];

只有在downloadAndPareOp完成之后,才会执行laterOp。

事实上,我鼓励你写你的代码,以便这种方法是可能的。NSOperations和NSOperationQueue的最大优势之一是它可以轻松地协调代码执行。

票数 1
EN

Stack Overflow用户

发布于 2011-07-22 19:01:31

通常的做法是让NSOperation在任何需要知道操作已完成的对象上调用方法。或者,您可以使用NSNotificationCenter来允许各种对象以更分散的方式侦听更新。或者,您可以使用KVO来侦听NSOperation的isFinished属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6788948

复制
相关文章

相似问题

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