代理模式

iOS中传递消息的模式有以下几种:

  • 通知:在iOS中由通知中心进行消息接收和消息广播,是一种一对多的消息传递方式。

  • 代理:是一种通用的设计模式,iOS中对代理支持的很好,由代理对象、委托者、协议三部分组成。

  • block:iOS4.0中引入的一种回调方法,可以将回调处理代码直接写在block代码块中,看起来逻辑清晰代码整齐。

  • target-action:通过将对象传递到另一个类中,在另一个类中将该对象当做target的方式,来调用该对象方法,从内存角度来说和代理类似。

  • KVO:NSObject的Category-NSKeyValueObserving,通过属性监听的方式来监测某个值的变化,当值发生变化时调用KVO的回调方法。

代理的使用你一定会了,四个步骤。

1.写一个协议,里面声明需要实现的方法,必须实现为@required,非必须就@optional,如果不写默认@required。
2.在委托方的头文件中声明一个属性,id(XXXDelegate) 设置为 weak,防止循环引用,然后将委托方的delegate交给代理方。
3.然后代理方就去实现方法就好了
4.当委托方要调用协议里的方法时,判断一下代理方是否实现,再进行调用即可

(注意:有时若频繁判断代理方是否实现某个方法,可以定义一个枚举类型,表示各个方法的实现,然后在setDelegate方法中进行判断,将是否实现方法的相应情况赋值到枚举类型中,到时只需判断枚举类型即可,提升性能)

有时,为了不让某一控制器太过臃肿,可以将其代理给别的类去完成

代理与block的选择

  • 多个消息传递的话用delegate 好一些,如果要很多代理的话用block,因为一个delegate属性只能有一个代理方
  • 代理更注重过程,block注重结果
  • 性能上考虑的话,代理性能消耗较少

参考:http://www.tuicool.com/articles/Iz2iQbU

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值