把uiviewcontroller对象作为某个类的属性

X_nickname 2016-06-29 10:15:55
我有这样一个需求:在A类中 封装了网络请求的调用方法,C作为一个UIViewController 里面某个方法 调用A对象,发起网络请求,
之后A类响应服务端的网络请求,我在A类中对服务端返还给我的网络请求报文进行处理,如果返回的数据对象为空或者有其它报错情况,此时我怎么告知C对象?
我的解决方式是在A类中申明一个C对象的属性:@property (nonatomic,strong) C *vc ,我在C中发起网络请求的时候将C本身作为属性传递给A,然后A类中就可以通过属性 操作 C对象。
我想问一下,我的这种想法合理吗?有没有什么弊端?将一个UIViewController对象作为属性这种方式可取吗? 或者说解决我的需求还可以有哪些其它的方式,请大家不吝赐教,万分感谢
...全文
199 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
网易云捕 2016-07-05
  • 打赏
  • 举报
回复
引用 楼主 u013121511 的回复:
我有这样一个需求:在A类中 封装了网络请求的调用方法,C作为一个UIViewController 里面某个方法 调用A对象,发起网络请求, 之后A类响应服务端的网络请求,我在A类中对服务端返还给我的网络请求报文进行处理,如果返回的数据对象为空或者有其它报错情况,此时我怎么告知C对象? 我的解决方式是在A类中申明一个C对象的属性:@property (nonatomic,strong) C *vc ,我在C中发起网络请求的时候将C本身作为属性传递给A,然后A类中就可以通过属性 操作 C对象。 我想问一下,我的这种想法合理吗?有没有什么弊端?将一个UIViewController对象作为属性这种方式可取吗? 或者说解决我的需求还可以有哪些其它的方式,请大家不吝赐教,万分感谢
通用的方法是: 1. 定义一个protocol ,里面定义网络操作成功或者失败的一些方法,比如 @protocol xxxxxDelegate<NSObject> @optional /* 网络请求成功的回调 */ -(void)successRequest; /* 网络请求失败的回调 */ -(void)failToRequest:(NSError *)error; @end 2. A中定义一个这样协议的delegate对象 @property(nonatomic, weak) id<xxxxxDelegate> delegate; 3. C中实现上面的协议,具体的实现细节可以多看看资料 4. C中给A的delegate赋值 a.delegate = self. 5. A中处理网络请求后,调用delegate即可。 如果做过c/c++开发,这个过程跟回调(callback)有一些相似的地方
baidu_35504209 2016-07-04
  • 打赏
  • 举报
回复
你可以写一个代理方法,在A类中进行数据请求,代理有两个方法一个成功一个失败,成功你就把数据传给C,失败你也把失败原因传给C,然后C接受A的代理实现这两个代理方法就可以了!!!
X_nickname 2016-06-29
  • 打赏
  • 举报
回复
欢迎各位解答 再次

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧