【发布时间】:2014-01-15 20:56:03
【问题描述】:
我一直使用 NSOperation 子类创建和管理自己的 NSURLConnection 的模式。 NSOperation 子类由视图控制器实例化,并且在完成之前不会打扰控制器的工作。当它完成检索数据时,它会执行视图控制器提供的完成块。
- ViewController 实例化 NSOperation 子类(封装了 URL、参数等)
- NSOperation 子类实例化 NSURLConnection(执行同步请求并检索数据)
- NSURLConnection 将数据转储到 NSOperation 子类
- NSOperation 子类执行视图控制器提供的完成块。
我现在正在尝试使用 NSURLSession 实现相同的模式。我希望能够将发出网络请求所需的 url 和参数封装在单个对象中。我是否使用 NSURLSession 子类或 NSURLSessionTask 子类来实现这一点?
我喜欢根据参与者设计模式为每个网络操作创建单独的类。
【问题讨论】:
-
你有没有尝试看看 AFNetworking ?我认为没有理由再次发明轮子 :)
-
AFNetworking 适用于一次性请求。这里我基本上是在尝试将请求封装到单独的类中。
-
@GrzegorzKrukowski 在 AFN 中,如果它使用底层
NSURLSessionTask,则 AFN 类不是NSOperation的子类。只有当它使用底层NSURLConnection时,对应的AFN类才是NSOperation的子类。如果需要 NSOperation 子类,则不能将 AFN 与NSURLSessionTask一起使用。 -
@CouchDeveloper "如果你需要一个 NSOperation 子类" 它实际上是相反的。我试图取消创建 NSOperation 子类。但我希望将所有请求封装到单独的类中。我希望我的视图控制器使用参数实例化 GetSomeResourceFromNetwork 并将其传递给完成黑色。
-
@NSExplorer,请参阅我的更新答案。你不能继承
NSURLSessionTask,但你可以把它包装在一个瘦对象中。
标签: ios objective-c nsurlsession