代理

代理的使用步骤

  • 定义一份代理协议
    • 协议名称:类名+delegate
    • 细节:
      • optional
      • 方法名一般以类名开头
      • 一般都需要将对象本身传出去
        • 比如tableView的代理方法,当用户点击加号,就知道用户点击的是哪一行的加号
      • 必须要遵守基协议
  • 声明一个代理属性
    • id<协议>delegate
  • 设置代理
  • 遵守协议
  • 实现协议方法
  • 当控件内部发生了一些事情,就可以调用代理的代理方法,通知代理
    • 调用代理的代理方法,通知代理【self.delegate 代理方法:self】
    • 如果是optional需要判断一下有没有这个代理方法

iso监听某些事件的方法

  • 通知

    • NSNotificationCenter | NSNotification
    • 任何对象之间都可以传递消息
    • 使用范围:
      • 一个对象可以发通知给多个对象
      • 一个对象可以接受多个对象发出的通知
    • 要求:必须保证通知的名字在发出和监听的时候是一致的
  • KVO

    • 仅仅是能监听对象属性的改变(灵活度不如通知和代理)
  • 代理

    • 使用范围
      • 一个对象只能设置一个代理(假设一个对象只能设置一个代理属性)—— 设计角度
      • 一个对象能成为多个对象的代理(控制器)
  • 如何选择?

    • 一般来说,只想监听某个对象属性值的改变,就用KVO
    • 通知和代理,一般来说,会选择代理,代理相对于通知要规范一些,因为通知有一个要求,发出通知和监听通知的名字要一致,假设发布名字发生改变,就监听不到了。
    • 通知的好处:简单易用,代理相对比较麻烦
    • 代理比通知规范
    • 能用代理就用代理
    • 同时通知多个对象的时候,就不能用代理了,只能使用通知
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容