gpt4 book ai didi

ios - 在 iOS NSOperations 中包装 NSURLSessionTask 的优势

转载 作者:行者123 更新时间:2023-11-28 23:34:23 24 4
gpt4 key购买 nike

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

最佳答案

我的第一 react 是说“无论如何都没有”,但仔细想了一下,这可能有点太油嘴滑舌了。

一般来说,如果您的应用已经使用 NSOperation 来执行其他任务,那么让您的网络操作成为另一种特殊类型的操作可能会很有用,这样您就可以在其中管理它们一样的方法。当然,如果你这样做,你几乎肯定不应该直接使用 NSOperation;相反,使用 NSOperation 的自定义子类,它实际上知道如何在调用其取消方法时取消网络操作。如果使用不当,按原样使用 NSOperation 类可能比无用更糟糕。

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

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

  • 对于较短的请求,与仅在前台重新发出请求相比,这几乎没有任何优势。
  • 对于长请求,后台下载/上传是更好的选择,因为它们的资源密集程度要低得多(因为您的应用程序可以被操作系统终止以释放内存),而且您可以实际保证操作系统获胜无论如何都要终止你的进程。

实际上,使用自定义 NSOperation 子类的优点与将 NSOperation 用于应用程序中其他任何内容的优点相同 — 不多也不少。

关于ios - 在 iOS NSOperations 中包装 NSURLSessionTask 的优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55512458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com