OC_协议代理
2016-03-04 20:53
169 查看
【协议/protocol】
———————————————————————————————————————
<1>. 协议的定义
在oc中是用来规范方法的声明,可以实现多继承或对象间通信的一种语法。
<2>. 协议的写法:
@protocol 协议名 <NSObject>
@required(缺省方法)
//遵从协议的类必须实现的方法
@optional
//遵从协议的类可选实现的方法
@end
【注】协议只有一个头文件,里面声明方法
<3>. 协议中声明的方法有两种权限:
@required:(缺省)必须的,即遵从协议的类,必须实现这个方法
@optional: 可选的,遵从协议的类,可以实现这个方法,也可以不实现。
<4>. 使用协议需要注意的问题
1.协议中只声明方法,不实现方法
2.遵从协议的类须导入协议头文件
3.协议中@required权限的方法必须实现
<5>. 遵从(conform)协议的类写法
@interface Dog : NSObject <EatProtocol, RunProtocol>
//Dog类就遵从了协议,如果遵从多个协议(多继承),协议间用逗号隔开
【注】遵从协议的类会创建出遵从协议的对象
<6>. 持有协议的id指针写法
@property (weak) id<MyDelegate> delegate;
//delegate是持有协议的id指针,只能调用协议中声明的方法
//持有协议的id指针,只能指向遵从协议的对象
=================================
【代理/delegate】
———————————————————————————————————————
<1>. 代理
//协议的重要用处,一个是规范接口,一个是实现代理.
//代理是实现两个类的对象间通信的一种机制。
【委托方】主动方 持有带协议的id指针,可以使用协议。
@property (weak) id<MyDelegate> delegate;
//代理对象不使用strong,写weak,表示不retain,和普通变量一样直接赋值
//使用weak的原因:防止内存泄露
【代理方】被动方 遵从协议,实现协议中的方法。
代理实现步骤:
第一步:制定协议
第二步:委托方 : 使用协议
第三步:代理方:实现协议
第四步:建立代理关系
<2>. 回调
//协议的另一个功能就是进行回调。
当我们需要完成某个功能模块,但不知道使用功能模块的是哪个对象,通过协议,可以规定接收数据的对象通过哪个方法获得数据,调用该方法的过程称为【回调】。
【委托方】主动方 遵从协议,实现方法。
【代理方】被动方 持有带协议的id指针,可以使用协议。
回调过程:
1、委托方注册代理方对象,调用代理方实现功能;
2、代理方通过持有协议的id指针使用协议;
3、委托方实现协议。
———————————————————————————————————————
<1>. 协议的定义
在oc中是用来规范方法的声明,可以实现多继承或对象间通信的一种语法。
<2>. 协议的写法:
@protocol 协议名 <NSObject>
@required(缺省方法)
//遵从协议的类必须实现的方法
@optional
//遵从协议的类可选实现的方法
@end
【注】协议只有一个头文件,里面声明方法
<3>. 协议中声明的方法有两种权限:
@required:(缺省)必须的,即遵从协议的类,必须实现这个方法
@optional: 可选的,遵从协议的类,可以实现这个方法,也可以不实现。
<4>. 使用协议需要注意的问题
1.协议中只声明方法,不实现方法
2.遵从协议的类须导入协议头文件
3.协议中@required权限的方法必须实现
<5>. 遵从(conform)协议的类写法
@interface Dog : NSObject <EatProtocol, RunProtocol>
//Dog类就遵从了协议,如果遵从多个协议(多继承),协议间用逗号隔开
【注】遵从协议的类会创建出遵从协议的对象
<6>. 持有协议的id指针写法
@property (weak) id<MyDelegate> delegate;
//delegate是持有协议的id指针,只能调用协议中声明的方法
//持有协议的id指针,只能指向遵从协议的对象
=================================
【代理/delegate】
———————————————————————————————————————
<1>. 代理
//协议的重要用处,一个是规范接口,一个是实现代理.
//代理是实现两个类的对象间通信的一种机制。
【委托方】主动方 持有带协议的id指针,可以使用协议。
@property (weak) id<MyDelegate> delegate;
//代理对象不使用strong,写weak,表示不retain,和普通变量一样直接赋值
//使用weak的原因:防止内存泄露
【代理方】被动方 遵从协议,实现协议中的方法。
代理实现步骤:
第一步:制定协议
第二步:委托方 : 使用协议
第三步:代理方:实现协议
第四步:建立代理关系
<2>. 回调
//协议的另一个功能就是进行回调。
当我们需要完成某个功能模块,但不知道使用功能模块的是哪个对象,通过协议,可以规定接收数据的对象通过哪个方法获得数据,调用该方法的过程称为【回调】。
【委托方】主动方 遵从协议,实现方法。
【代理方】被动方 持有带协议的id指针,可以使用协议。
回调过程:
1、委托方注册代理方对象,调用代理方实现功能;
2、代理方通过持有协议的id指针使用协议;
3、委托方实现协议。
相关文章推荐
- 多态计算机程序
- python下RSA 加密/解密,签名/验证
- 浅析HashMap源码
- SQLException: Communications link failure
- 数据库连接池的工作原理
- hitTest:方法练习 - 点击事件穿透
- 支持向量机通俗导论(理解SVM的三层境界)
- hdu 1027 Ignatius and the Princess II
- hadoop中URI理解
- 我的第一篇博客
- Xshell 缺少 mfc110.dll
- 使用Python的netCDF4和matplotlib.basemap包进行气象数据的可视化
- 【BZOJ1098】[POI2007]办公楼biu【BFS/DFS】【链表优化】【补图】
- OC_内存管理:MRC与ARC
- typedef的使用3——使用经过typedef定义的函数构成的函数数组
- 求最小公倍数(公式法)的实现
- POJ3581 Sequence(后缀数组)
- 大论文中对参考文献添加操作相关总结
- 文件缓存
- next_permutation函数