代理设计模式
-
代理设计模式的总结:
- 如果你想监听别人的一些行为,那么你要成为别人的代理
- 如果你想告诉别人一些事情,那么就让别人成为你的代理
-
代理设计模式的开发步骤
- 需要写一份协议
- 协议名字格式:控件名 + Delegate
- 在协议里面声明一些代理方法
- 一般都使用@optional,表示可选
- 也可以写@@required,表示必须实现
- 声明一个代理属性@property (nonatomic, weak) id<代理协议> delegate;
- 一定要用weak,这里就不说为什么了
- delegate这个有的时候是不能使用的,特别是控件自身有这个属性的时候,这个时候可以用别的名称,比如:xxxDelegate
- 在内部发生某些行为时,调用代理对应的代理方法,通知代理内部发生什么事
- 设置代理:xxx.delegate = yyy
- yyy对象遵守协议,实现代理方法
- 在需要执行代理方法的时候,调用对应的方法
- 需要写一份协议
@protocol YWLoadMoreFooterDelegate <NSObject>
@optional
- (void)loadMoreFooterDidClickLoadMoreButton:(YWLoadMoreFooter *)footer;
@required
- (void)loadMoreFooterDidClickHideButton:(YWLoadMoreFooter *)footer
@end
// 代理属性
@property (nonatomic, weak) id<YWLoadMoreFooterDelegate> delegate;
// 设置代理
footer.delegate = self;
// 触发代理方法
if ([self.delegate respondsToSelector:@selector(loadMoreFooterDidClickLoadMoreButton:)]) {
[self.delegate loadMoreFooterDidClickLoadMoreButton:self];
}