有谁能告诉我,在使用NSURLSessionTask进行iOS网络调用时,在NSOperation中使用iOS的真正优势是什么?我们可以通过将NSURLSessionTask包装到任何其他普通的自定义类(例如APIRequest )中来获得抽象。使用NSOperation进行网络呼叫背后的真正座右铭是什么?提前谢谢。
发布于 2019-04-17 18:39:19
我的第一个倾向是说“没有”,但再想一想,这可能有点太轻率了。
通常,如果您的应用程序已经使用NSOperation执行其他任务,那么让您的网络操作成为另一种特殊类型的操作可能是有用的,这样您就可以以同样的方式管理它们。当然,如果这样做,您几乎肯定不应该直接使用NSOperation;相反,应该使用NSOperation的自定义子类,该子类实际上知道如何在调用其cancel方法时取消网络操作。如果误用的话,使用NSOperation类作为-is甚至比无用更糟糕。
我对它为什么如此普遍的最好解释是历史的。显然,许多程序员错误地认为,将同步NSURLConnection请求封装在NSOperation对象中可以为他们提供一种取消这些请求的方法。实际上,它所做的只是阻止应用程序从请求中获取数据,但是请求一直持续到它完成。不幸的是,在更新代码以使用NSURLSession的过程中,这种遗留的包袱常常会带来,而且现在可能和当时一样有问题。
正如其他人在评论中提到的那样,你也可以表面上使用操作,允许在你的应用程序搁浅后继续执行挂起的请求,但总的来说,这样做可能是个错误。毕竟:
因此,实际上,使用自定义NSOperation子类的优势与在应用程序中使用NSOperation的优点相同--不多,也不少。
https://stackoverflow.com/questions/55512458
复制相似问题