如何在NSOperationQueue完成之前阻止NSOperation?

Ron*_*gge 5 concurrency objective-c nsoperation nsoperationqueue ios

我有一个数据加载操作需要从主线程运行,以避免潜在的阻塞问题.为此,我使用了NSOperationQueue和NSOperations.

然而,出现的一个问题是存在一种操作以基于传入信息产生附加操作.试图解决这个问题也解决了我在其他地方遇到的一些小问题,因为我遇到的解决方案是给NSOperation它自己的子任务队列.

问题是,只要'main'退出,NSOperation将被标记为'finished',无论子队列是否已完成处理; 我该如何覆盖这种行为?

Sve*_*ven 1

您可以waitUntilAllOperationsAreFinished在退出操作主方法之前向子队列发送消息。这很简单,但不是一个好主意,因为它会阻塞整个线程,这是相当浪费的。

更好的解决方案是使用依赖系统。创建另一个依赖于您的主操作的操作。创建子操作后,还将它们添加为新“完成”操作的依赖项。