假设我们有NSOperation A和NSOperation B. B依赖于A完成并执行一些设置,因为A.completionBlock
被调用并完成。这意味着B.addDependency(A)
无法使用,因为在A完成之前无法构造B.因此,在构建和启动B之前,我们选择在单独的线程上使用A.waitUntilFinished()
。
但是,因为A的completionBlock是在另一个线程上调用的,所以我们称之为A.waitUntilFinished()
的线程在 A.completionBlock
之前解锁 执行并因此建造B必要的先决条件尚未完成。
因为苹果NSOperation API无法控制调度A.completionBlock
的位置,处理此问题的常用方法是什么?
修改
到目前为止,我尝试过的选项是将NSOperation B包装在NSBlockOperation C中,然后调用C.addDependency(A)
,以便在A完成之前不构造B。但是,这仍然无法解决问题,因为仍必须在NSBlockOperation C中调用异步启动,并且完成块仍然会飞到另一个线程。
答案 0 :(得分:0)
因为你想要发生的是模型2的uuid已知的模型2保存,你能用这些术语表达它,并让模型2观察模型1的uuid(或使用通知)并在设置值后启动操作B?