首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSURLSessionTask封装在iOS NSOperations中的优势

NSURLSessionTask封装在iOS NSOperations中的优势
EN

Stack Overflow用户
提问于 2019-04-04 09:30:21
回答 1查看 98关注 0票数 0

有谁能告诉我,在使用NSURLSessionTask进行iOS网络调用时,在NSOperation中使用iOS的真正优势是什么?我们可以通过将NSURLSessionTask包装到任何其他普通的自定义类(例如APIRequest )中来获得抽象。使用NSOperation进行网络呼叫背后的真正座右铭是什么?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-17 18:39:19

我的第一个倾向是说“没有”,但再想一想,这可能有点太轻率了。

通常,如果您的应用程序已经使用NSOperation执行其他任务,那么让您的网络操作成为另一种特殊类型的操作可能是有用的,这样您就可以以同样的方式管理它们。当然,如果这样做,您几乎肯定不应该直接使用NSOperation;相反,应该使用NSOperation的自定义子类,该子类实际上知道如何在调用其cancel方法时取消网络操作。如果误用的话,使用NSOperation类作为-is甚至比无用更糟糕。

我对它为什么如此普遍的最好解释是历史的。显然,许多程序员错误地认为,将同步NSURLConnection请求封装在NSOperation对象中可以为他们提供一种取消这些请求的方法。实际上,它所做的只是阻止应用程序从请求中获取数据,但是请求一直持续到它完成。不幸的是,在更新代码以使用NSURLSession的过程中,这种遗留的包袱常常会带来,而且现在可能和当时一样有问题。

正如其他人在评论中提到的那样,你也可以表面上使用操作,允许在你的应用程序搁浅后继续执行挂起的请求,但总的来说,这样做可能是个错误。毕竟:

  • 对于简短的请求,这与仅仅在前景化时重新发出请求相比几乎没有什么优势。
  • 对于长时间的请求,背景下载/上传是一个更好的选择,因为它们的资源密集型程度要低得多(因为您的应用程序可以被操作系统终止以释放内存),而且您可以实际保证操作系统不会扼杀您的进程。

因此,实际上,使用自定义NSOperation子类的优势与在应用程序中使用NSOperation的优点相同--不多,也不少。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55512458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档