代理设计模式的作用:
1.A对象监听B对象的一些行为,A成为B的代理
2.B对象想告诉A对象一些事情,A成为B的代理
代理设计模式的总结:
如果你想监听别人的一些行为,那么你就要成为别人的代理
如果你想告诉别人一些事情,那么就让别人成为你的代理
代理设计模式的开发步骤
1.拟一份协议(协议名字的格式:控件名 + Delegate),在协议里面声明一些代理方法(一般代理方法都是@optional)
2.声明一个代理属性:@property (nonatomic, weak) id<代理协议> delegate;
3.在内部发生某些行为时,调用代理对应的代理方法,通知代理内部发生什么事
4.设置代理:xxx.delegate = yyy;
5.yyy对象遵守协议,实现代理方法
示例程序:
程序结构如下,控制器将作为footer类的代理,并且实现代理类中的方法,在footer类中判断控制器有没有实现代理类中的方法,如果有就会调用控制器中的代理方法。
1.控制器和footer类的关系图如下:
2.在footer类的头文件中,
先声明好LYLoadMoreFooterDelegate代理,可以认为就是一个提供方法的接口,<NSobject>表示支持任何对象,@optional表示下面的方法实现方式为非强制。然后声明一个代理对象delegate,这个对象要求为实现了<LYLoadMoreFooterDelegate>协议(接口)的对象(就是下面的控制器对象,不管是谁作为被赋值为这个对象都必须实现了代理或者说接口的方法)。
3.在footer类的.m文件中,
在需要调用代理类的代理方法的地方,首先判断下代理类是否真的实现了需要调用的代理方法,如果有实现就调用。
4.在控制器.m文件中,
首先要实现 LYLoadMoreFooterDelegate 这个(代理/接口)。
然后在首次加载的方法中,实例化出footer类,并且给footer类的delegate对象赋值为self,表示自己成为footer对象的代理,下面的方法正是成为代理后要实现的方法。