TL; DR 在整个应用程序中使用NSURLSession
是否有任何常见模式,只需按照子类{{1}的方式创建新的客户端类}}?
我喜欢使用AFNetworking
有很多原因,如果我没有看到禁忌症,我很乐意使用它,但有时候我会有一个相对简单的任务来实现,AFHTTPSessionManager
似乎是一种矫枉过正或者我只需要避免第三方依赖。
在我的脑海中,我意识到来自Apple的人为我们提供了一个很酷的东西叫AFNetworking
,这听起来像是很多情况下的完美灵魂,但当我明星阅读在项目中使用它时,我想要回到NSURLSession
让我解释一下原因......
当您计划使用AFNetworking
为您的网络任务创建自定义类时,您只需创建一个AFNetworking
的子类(当然,如果您正在处理HTTP)并简单地返回单例等等...(如果你不知道故事的其余部分,请检查this great tutorial)
简单,对吧?
但是如果我想以同样的方式继承AFHTTPSessionManager
怎么办?好吧,我仍然在互联网上搜索一个解决方案,但到目前为止还没有运气...每个教程,每篇文章,每个帖子状态,你在视图控制器中实例化NSURLSession
,如果需要你使用它,期间。但是,如果我想在整个应用程序中使用此客户端,会发生什么?
答案 0 :(得分:2)
对于您描述的用例,使一个具有NSURLSession
作为属性的单例而不是对其进行子类化会更简单。请参阅 Prefer composition over inheritance?
您在视图控制器中实例化
NSURLSession
的每个教程,每篇文章,每个帖子状态,如果需要,您可以使用它,句点。
视图控制器通常不应该包含任何NSURL…
类,因为视图控制器应该被告知要显示什么,它不应该询问。它超出了视图控制器应该做的范围。