代理简述 - delegate

delegate(代理)是什么?
A需要完成某事情,但是自己不想/自己不能完成,那怎么办?

  1. 那么他将需要完成此事的条件列出来(协议)
  2. A设置个“代理属性”
  3. 其他任何人,只要满足条件(遵循代理协议),并告诉A,谁帮他做这事就行了(为A的代理属性,设置代理对象)!

delegate的使用
以UIScrollView为例子,需要获取当内容滚动时,获取contentOffSet(偏移量)

  1. 遵守代理,协议
  2. 代理属性,UIScrollView里面的代理属性
    @property (nonatomic, weak, nullable) id delegate;
  3. 代理对象
    用当前控制器为,代理对象!self.scrollView.delegate = self;
  4. 实现代理方法
    - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView; //用户开始拖拽时调用的代理方法

delegate做什么用?(解耦)

  1. 监听事件
    scrollView发生某个事件时 --> 通知代理对象的某个方法
    代理对象的某个方法,监听到scrollView的某个事件(状态发生改变), --> 采取自己想要的行动
  2. 返回数据

注意:
@optional - (可选),@required -(必须)修饰的方法区别?
 被@optional修饰的方法可以实现,也可以不实现
 被@required修饰的方法,必须实现

你可能感兴趣的:(代理简述 - delegate)