代理:
1.代理者作为某个类的一个属性,通常是另一个类的实例对象,可以负责完成原
来这个类不方便或者无法完成的任务。本质上降低了与耦合对象之间的偶合度
(可以服务任何支持该代理的对象)
2.声明代理的时候需要用weak,避免循环引用
3.代码
@protocol MyDelegate <NSObject>
@optional //可选择执行的方法
//在这里写方法
@required//必须执行的方法
//在这里写方法
@end
@property(nonatomic,assign)id<MyDelegate>delegate;
协议:
1.定义一组方法,这些方法由某个类来实现,这些方法就像是一组接口,任何类
都可以来调用实现这组方法,独立于任何特定的类。
1.1协议是一组通讯协议,一般用作两个类之间的通信;
1.2协议声明了一组所有类对象都可以实现的接口;
1.3协议不是类,用@protocol声明
1.4与协议有关的两个对象,代理者何委托者
2.优点:
2.1有利于代码的封装。如果一个类实现了某个协议,那么这个协议中的方法
不必在.h文件中声明,就可以被定义协议的类调用,减少了一个类暴露给
外部的方法;
2.2有利于程序的结构化与层次化。一个协议往往是解决某个问题的方法,对
于类似的问题,只需要再次实现协议即可,避免了在构思一组方法,协议
的继承机制使得这一点更强大。
大家可以点击下载demo下载协议的代码哦,很容易理解的,包你看了之后就会恍然大悟。