改变响应链,降低耦合度
一、使用步骤
1.你要明确你的协议名称,一般来讲名称都是:控件类名 + Delegate
2.代理方法中一般都是声明为@optional(程序默认情况下是@required)
3.代理方法名一般以控件开头
4.代理方法至少有一个参数
@classCustomer;
@protocol CustomerDelegate <NSObject>
@required
- (void)customer:(Customer *)customer buyItemCount:(NSInteger)count;
@end
@interface Customer : NSObject
// 经销商
@property (nonatomic, weak) id <CustomerDelegate> delegate;
// 顾客买卖行为
- (void)buyItemCount:(NSInteger)count;
二、基本属性
1.代理会提前声明,所以会用到@class
2.delegate需要使用weak,防止循环引用
3.代理与协议
代理为了降低耦合度,协议是约束对象,限制对象
三、代码示例
1.代理模式示例
https://github.com/shileseal/SLDelegateDemo
2.proxy实现代理模式示例
https://github.com/shileseal/SLNSProxyDemo