Ios 框架任务队列

Ios 框架任务队列,ios,parse-platform,nsoperationqueue,alamofire,bolts-framework,Ios,Parse Platform,Nsoperationqueue,Alamofire,Bolts Framework,我正在开发一个iOS应用程序,并一直在研究使用Parse的Bolts框架(facebook)来管理网络操作(使用Alamofire处理网络请求) 我想知道对于螺栓的任务队列是否有一个好的实现/模式。我需要离线功能,因此我(认为)需要某种任务队列,这样,如果用户离线,所有保存/创建操作都会被保存(排队并持久化),然后在他们建立网络连接后执行,这也是重试请求所需的。我已经看过NSOperation queue,所以我可能会选择这条路线,尽管我喜欢Bolt处理BFTask的方式,并且更愿意使用它。我理

我正在开发一个iOS应用程序,并一直在研究使用Parse的Bolts框架(facebook)来管理网络操作(使用Alamofire处理网络请求)


我想知道对于螺栓的任务队列是否有一个好的实现/模式。我需要离线功能,因此我(认为)需要某种任务队列,这样,如果用户离线,所有保存/创建操作都会被保存(排队并持久化),然后在他们建立网络连接后执行,这也是重试请求所需的。我已经看过NSOperation queue,所以我可能会选择这条路线,尽管我喜欢Bolt处理BFTask的方式,并且更愿意使用它。

我理解您的问题,但我认为您将NSOperation queue和BFTasks的用途弄混了一点

BFTasks用于以一种内聚和最低限度的方式使用和创建异步和同步方法/网络请求。例如,假设必须登录用户,显示搜索视图,然后下载用户的搜索查询结果

为了使你的应用程序保持最佳状态,并使UI速度达到60 fps,你需要异步运行你的网络请求。显然,只有用户登录(使用您的方法)(这种技术称为“异步任务串联”)时,您才会显示搜索视图,然后您将使用并行异步请求下载搜索结果(考虑在iTunes中下载电影名称查询的电影艺术作品。它们同时开始“并行”下载用户图像彼此独立下载)。(这是一个称为“异步并行任务”的任务)

从这个示例中可以看出,如果使用顺序和并行异步请求,我们只能实现所需的逻辑和所需的性能。 Bolts框架允许您以一种非常内聚和方便的方式实现上述所有逻辑

另一方面,NSOperation queue允许您构建同步和异步方法的复杂序列。它甚至允许您获取特定操作的状态并绑定依赖项。视图控制器生命周期就是一个很好的例子

如果我是你,我会首先学习如何使用螺栓和操作队列。然后,根据您在应用程序中实际需要实现的功能,我将开始考虑在类或结构中绑定螺栓和NSO操作队列(如果您使用swift)。就像使用螺栓进行“在线”操作(执行网络请求)和NSOperation队列进行“离线”(存储用户在离线时所做的操作序列,以便在internet连接恢复时执行此序列)

您可以阅读有关NSO操作和iOS螺栓的更多信息

更新:

在实现模式方面,您可能需要考虑的一个建议是创建一个简单的类/结构,负责存储(“堆叠”)您的螺栓方法。序列逻辑可以使用数组,并行逻辑可以使用集合。您还可以使用集合轻松确保某些请求只发生一次,因为集合只存储唯一的对象。老实说,在我看来,您应该尝试实现类似于我描述的东西,因为螺栓本身(几乎可以肯定)包含了NSOperation和NSOperationQueue


顺便说一句,因为,您可以看到他们如何实现
saveevenutaly
方法,该方法在internet连接恢复时保存对象,并思考如何根据您的需要复制他们的逻辑。

感谢您的输入,我了解每种方法是如何工作的(并且已经独立使用了这两种方法)我只是想看看是否已经有一个很好的实现来绑定这两个。就像NSOperationQueue,而不是NSOperations,它是BFTasks。好吧,这是一个很难找到的东西,因为在这一点上,可能有很多关于如何确切地绑定这两件事的细节。我添加了一些建议,看看它们是否可以帮到你。可以,谢谢。我一直在看parse sdk,有很多工作要做,但我认为我有一个很好的起点。