说一说我的理解吧:
1,首先是:基本用途:协议可以用来声明一大堆方法(不能声明成员变量);只要某个类遵守了这个协议,就相当于拥有了这个协议宏的所有方法声明;只要父类遵守了某个协议,就相当于子类也遵守了。
格式:
- //1,协议的编写
- @protocol 协议名称
- //方法列表
- @end
复制代码
2,定义变量时指定遵守协议:
格式:
- /*
- 类名<协议名称> *变量名
- id<协议名称> 变量名
- */
- NSObject<MyProtocol> *obj;
- id<MyProtocol> obj2;
复制代码
使用:
- //@property (nonatomic, strong) 类名<协议名称> *属性名;
- @property (nonatomic, strong) Dog<MyProtocol> *dog;
- // @property (nonatomic, strong) id<协议名称> 属性名;
- @property (nonatomic, strong) id<MyProtocol> dog2;
复制代码
3,协议的应用--代理设计模式
<1>设计原理
自己不想亲自去做的事情,可以找人帮忙做,这就是代理。
<2>设计思路
(1)明白代理会做的事情,即代理的属性
(2)明白代理要去做的事情,即代理的方法
(3)换个代理后,自身不受到影响。
<3>实现方案
(1)定义一个协议protocol,在其中声明一些和代理沟通的方法
(2)拥有一个代理属性,也就是代理的功能
(3)让代理遵守定义的协议protocol |