什么是协议代理?
代理是一种通用的设计模式,在iOS中对代理设计模式有很好的支持,有特定的语法来支持代理模式。
主要有三部分组成:
1.协议:用来规定应该做什么,必须做什么。
2.代理方:根据制定的协议,完成委托方需要实现的功能。
3.委托方:根据制定的协议,提出代理方需要实现的功能。\
什么场景使用?
举一个例子:比如我需要买一个只有美国才有卖的东西,而我人在中国,也没办法买到美国的东西,这时候我就需要去网上找美国代购小姐姐来帮我购买这个东西,而交易的方式可能就是通过马云爸爸的淘宝店,那么这个时候淘宝中制定的规则就是我们的协议,而我就是委托方,美国代购小姐姐就是代理方,我给代购小姐姐的钱就是我传入的参数,最后他寄给我的东西就是返回的结果。
代码怎么写?
1.制定协议
@protocol MPAmericanBuyDelegate <NSObject>
- (void)buySomethingFromAmericanWithPrice:(CGFloat)aPrice;
@end
2.触发协议条件(代理)
//声明
@interface MPAmericanBuyView : UIView
@property (nonatomic ,weak) id<MPAmericanBuyDelegate> delegate;
@end
//实现
- (void)finishedBuyBtnClicked
{
//『三十六路打狗棍法』之协议代理判断
if(_delegate && [_delegate respondsToSelector:@selector(buySomethingFromAmericanWithPrice:)])
{
[_delegate buySomethingFromAmericanWithPrice:[self.priceField.text floatValue]];
}
}
3.实现协议方法(委托)
- (void)buySomethingFromAmericanWithPrice:(CGFloat)aPrice
{
NSLog(@"完事了");
}