我有一个 iOS 应用程序,其中 5 个 NSBlockOperation 每个生成一个 NSArray 对象,并将其添加到一个共享的同步 NSMutableArray 中,该 NSMutableArray 用作 UITableView 数据源。
该操作彼此独立,一旦完成,我需要启动 UITableView 数据重新加载。
不幸的是,我找不到使用 NSOperation 的方法。我需要使用另一个多线程设计吗?
我有一个 iOS 应用程序,其中 5 个 NSBlockOperation 每个生成一个 NSArray 对象,并将其添加到一个共享的同步 NSMutableArray 中,该 NSMutableArray 用作 UITableView 数据源。
该操作彼此独立,一旦完成,我需要启动 UITableView 数据重新加载。
不幸的是,我找不到使用 NSOperation 的方法。我需要使用另一个多线程设计吗?
将您的重新加载数据调用添加到另一个 NSOperation,它具有addDependency:
其他五个操作作为其依赖项(请参阅 参考资料)。然后在其他完成之前不会执行它。
请务必将您的 UI 调用包装在一个 GCD 调度中到主线程。
从 NSOperation 参考:
依赖项是一种按特定顺序执行操作的便捷方式。您可以使用 addDependency: 和 removeDependency: 方法为操作添加和删除依赖项。默认情况下,具有依赖关系的操作对象在其所有依赖的操作对象都完成执行之前不会被视为就绪。然而,一旦最后一个依赖操作完成,操作对象就准备好并能够执行。