一、代理的使用场合
1、使用代理的第一步就是确定,谁是谁的代理,也是注重要的,请代理的人拥有一个代理属性id<XXX>delegate,只要在需要的时候去调用代理属性deleagate的某些方法即可完成某些行为
2、几个代理的使用场合
1>对象B要监听对象A的行为,此时的对象B是对象A的代理
2>对象A发生某些行为,通知对象B,此时B是A的代理
3>对象A无法完成某些行为,需要对象B去帮忙处理,此时对象B是对象A的代理
二、代理三部曲
1、请代理三部曲
1>定义协议protocol
在m文件当中定义代理需要遵守的协议,通常代理名称是自己的类名+Delegate,注意添加@optional
eg:Person请代理
@protocol PersonDelegate <NSObject>
@optional
方法列表
注意:方法名通常一类名开头并且一定将请代理的对象自己(谁请代理)作为参数传进去
代理方法的命名:代理名称 + 功能 + 请代理的对象自己(没有活着只有一个其他参数)
代理名称 + 请代理的对象自己 + 其他参数(有多个其他参数)
@end
2>组合一个id类型的变量名为delegate变量到类中
eg:
@property (nonatomic, weak) id<PersonDelegate> deleagate;
3>在自己发生某些事件,需要代理去处理的时候,在自己发生事件的方法里面调用代理的对应的代理方法,但是在调用代理方法的时候必须调用[self.delegate repondsToSelector:],查看代理方法是否被实现
2、做代理三部曲
1>遵守协议
eg:
@interface XXX : NSObject () <PersonDelegate>
@end
2>实现代理当中的方法,(等待请代理的人来调用),在代理方法中实现请代理的人要求代理做的事情
3>设置请代理的对象的id类型的delegate为自己
三、Xcode当中最标准的代理模式,就是UIScrollView,可以参照