• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - Bolts 框架任务队列

[复制链接]
菜鸟教程小白 发表于 2022-12-12 16:49:06 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

我想知道对于 Bolts 的任务队列是否有一个好的实现/模式。我需要有离线功能,因此我(认为)需要有某种任务队列,所以如果用户离线,他们所有的保存/创建操作都会被保存(排队和持久化),然后在他们有网络连接后执行,重试请求也需要。我查看了 NSOperation 队列,所以我可能会走那条路,尽管我喜欢 Bolts 如何使用 BFTask 做事并且更愿意使用它。



Best Answer-推荐答案


我理解你的问题,但我认为你混淆了 NSOperation queue 和 BFTasks 的目的。

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

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

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

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

如果我是你,我会先学习如何分开使用 Bolts 和 NSOperation 队列。然后,根据您在应用程序中实际需要在功能方面实现的目标,我会开始考虑在类或结构中绑定(bind) Bolts 和 NSOperation 队列(以防您使用 swift)。就像将 Bolts 用于“在线”内容(执行网络请求)和 NSOperation 队列用于“离线”(存储用户在离线时执行的操作序列,以便在互联网连接恢复时执行此序列)。

你可以阅读更多关于 NSOperation here以及关于 iOS 的 Bolts here .

更新:

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

顺便说一句,自从 Parse iOS SDK is open source right now ,您可以看到他们如何实现 saveEvenutually 方法,该方法在互联网连接恢复时保存对象,并思考如何根据您的需要复制他们的逻辑。

关于ios - Bolts 框架任务队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33271441/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap