NSOperation完成了

时间:2011-07-22 10:53:04

标签: objective-c ios cocoa-touch nsoperation nsoperationqueue

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

4 个答案:

答案 0 :(得分:5)

您还可以使用NSOperation的{​​{1}}:

- (void)setCompletionBlock:

更详细here

答案 1 :(得分:1)

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

[laterOp addDependency:downloadAndParseOp];

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

最好的方法是使用委托初始化您的NSOperation。当NSOperation完成他的工作后,他将使用委托方法之一(通过协议声明)调用委托。