我理解你的问题,但我认为你混淆了 NSOperation queue 和 BFTasks 的目的。
BFTasks 用于以一种内聚和简约的方式使用和创建异步和同步方法/网络请求。例如,假设必须登录用户,呈现搜索视图,然后下载用户的搜索查询结果。
为了使您的应用程序保持优化并使 UI 保持在 60fps,您需要异步运行您的网络请求。显然,只有当用户登录(使用您的方法)(这种技术称为“串行异步任务”)时,您才会显示搜索视图,然后您将使用并行异步请求下载搜索结果(考虑下载电影作品的电影名称在 iTunes 中查询。它们同时开始下载,彼此“并行”,因此用户图像彼此独立下载)。(而这被称为“并行异步任务”)。
从这个例子中可以看出,如果我们使用顺序和并行异步请求,我们只能实现所需的逻辑和所需的性能。Bolts 框架允许您以一种非常有凝聚力和方便的方式实现上述所有逻辑。
另一方面,NSOperation 队列允许您构建同步和异步方法的复杂序列。它甚至允许您获取特定操作的状态并绑定依赖项。一个很好的例子是视图控制器生命周期。
如果我是你,我会首先学习如何分开使用 Bolts 和 NSOperation 队列。然后,根据您在应用程序中实际需要在功能方面实现的目标,我会开始考虑在类或结构中绑定 Bolts 和 NSOperation 队列(以防您使用 swift)。就像将 Bolts 用于“在线”内容(执行网络请求)和 NSOperation 队列用于“离线”(存储用户在离线时执行的操作序列,以便在互联网连接恢复时执行此序列)。
你可以在这里阅读更多关于 NSOperation和 iOS 的 Bolts 的信息。
更新:
在实现模式方面,您可能要考虑的一个建议是创建一个简单的类/结构,该类/结构将负责存储(“堆叠”)您的 Bolts 方法。您可以将数组用于顺序逻辑,将集合用于并行逻辑。您还可以使用集合轻松确保某些请求仅发生一次,因为集合仅存储唯一对象。老实说,在我看来,您应该尝试实现类似于我所描述的内容,因为 Bolts 本身(几乎可以肯定)包含 NSOperation 和 NSOperaitionQueue。
顺便说一句,由于Parse iOS SDK 现在是开源的,您可以看到他们如何实现saveEvenutually
在互联网连接恢复时保存对象的方法,并思考如何根据您的需要复制他们的逻辑。