代理简述 - delegate

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

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

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

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

delegate做什么用?(解耦)

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,216评论 30 472
  • 掌握 UIScrollView的常见属性 UIScrollView的常用代理方法 UIScrollView的缩放 ...
    JonesCxy阅读 2,770评论 1 12
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,183评论 6 13
  • 1.OC里用到集合类是什么? 基本类型为:NSArray,NSSet以及NSDictionary 可变类型为:NS...
    轻皱眉头浅忧思阅读 1,395评论 0 3
  • 文/树獭先生 我越来越相信,每个人来到你的生命自有他的意义,哪怕他只能陪你走一段路,也许你们的相遇只是为了告别。 ...
    树獭先生阅读 5,552评论 131 186