iOS delegate 的使用

比如自己定义一个web请求类的封装  用来代理实现网络请求

本文参考了http://blog.csdn.net/huifeidexin_1/article/details/7567731

并自己写了一个网络请求的类来实际操作一下


用到的委托的作用有两个,一个是传值,一个是传事件。
1.所谓传值经常用在b类要把自己的一个数据或者对象传给a类,让a类去展示或者处理。(切分紧耦合,和代码分块的时候经常用)
2.所谓传事件就是a类发生了什么事,把这件事告诉关注自己的人,也就是委托的对象,由委托的对象去考虑发生这个事件后应该做出什么反映。(这个经常见,例如在异步请求中,界面事件触发数据层改变等等)
3.利用委托赋值,这种方法感觉是为了不暴露自己的属性就可以给自己复值,而且这样更方便了类的管理,只有在你想要让别人给你赋值的时候才调用,这样的赋值更可控一些。(例如tableView中的委托(dateSource)中常见)。

心得:delegate的命名要准确,尽量看名字就知道用法。delegate和通知有的用法有些象,但是前者是单对单的,后者是单对多的情况。
注意:在dealloc要把delegate至为nil,还有就是delegate设置属性的时候要用assign,不要用retain。

让B类代理A的网络处理

A.h文件

#import <Foundation/Foundation.h>

//声明一个Web协议
@protocol WebDelegate <NSObject>

- (void)requestWithURLString:(NSString *)urlString method:(NSString *)method;

@end
@interface Login : NSObject

{
    //定义一个代理
    id<WebDelegate>delegate;
}

A.m文件中
//让代理实现方法
    [delegate requestWithURLString:urlString method:method];


B.h文件中
//实现代理
@interface ScottWeb : NSObject<WebDelegate>

B.m文件中
//实现协议方法
- (void)requestWithURLString:(NSString *)urlString method:(NSString *)method{
}
就这样简单的几步实现了网络请求的封装,具体封装还未完成,但是原理相通。利用代理的方法可以很方便的让项目代码极大的降低耦合程度,同时也提高了代码的可复用性。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值