3

假设我们有 NSOperation A 和 NSOperation B。B 依赖于 A 的完成并由于A.completionBlock被调用和完成而执行一些设置。这意味着B.addDependency(A)在 A 完成之前无法构造 B。因此,我们选择A.waitUntilFinished()在构建和启动 B 之前在单独的线程上使用。

但是,由于 A 的 completionBlock 是在不同的线程上调用的,我们之前A.waitUntilFinished()调用unblocks的线程已经完成执行,因此在 B 的构造中,必要的先决条件尚未完成。 A.completionBlock

因为苹果 NSOperation API 不提供任何控制在哪里A.completionBlock分派,处理这个问题的常用方法是什么?

编辑:

到目前为止,我尝试过的选项是将 NSOperation B 包装在 NSBlockOperation C 中,然后调用C.addDependency(A)以便在 A 完成之前不构造 B。但是,这仍然不能解决问题,因为仍然必须在 NSBlockOperation C 中调用异步启动,并且完成块仍然会飞到另一个线程。

4

1 回答 1

0

由于您想要发生的事情是在知道模型 1 的 uuid 后让模型 2 保存,您能否用这些术语表达它,并让模型 2 观察模型 1 的 uuid(或使用通知)并在它知道后启动操作 B一个值集?

于 2014-07-09T21:52:30.347 回答