AFN 3.0 迁移 以及 NSURLSessionTask category的问题
项目从AFN 2.0 迁移到 3.0,因为代码历史问题,需要通过NSURLSessionTask 获取到responseString,可是通过category 无法添加属性以及方法
由于category 中需要用到reposne 中的数据,所以也无法直接给 NSObject 添加category,各位大大,是否有好的解决方案
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
NSURLSessionTask 确实加不了 category,有点类似『不能继承』的问题。一般遇到这种问题有几种思路,你看看对应你的业务能不能用:
组合代替继承,定义一个 NSURLSessionTaskWrapper,里面有一个属性是那个 task,另外想加什么别的属性和方法都可以;用到 task 的部分可以直接用
wrapper.task
,也可以写方法透传,比如当然,你控制得了自己的代码用
wrapper.task
,但控制不了系统的代码,所以我不知道你的业务用不用得了。用 runtime 加属性、加方法。可以解决上面的『控制不了系统的代码』的问题,用 runtime 改过之后,在系统眼里这个类就多了这些属性、这些方法。不过不能加 category,我不知道 runtime 管用不管用。
外部存储。找找 sessionTask 有没有适合用作唯一 id 的属性,然后写一个 SessionTaskManager 类,新加的方法放在这个 manager 类里面;新加的属性,manager 可以存一个字典,以 sessionTask 的 id 为键,具体的属性为值,需要用到的时候,根据 id 来存取。
以上是几种常用的思路,你可以看看具体到你的业务是否适用~
2016年06月03日21:29:15 更新
题主可以看看上面的代码是否可以实现需求。