无标题文章

block的反向传值

1. 调用方:准备块代码

跟“代理”来对比 - 类似于协议方法的实现

不同点:块代码都在一起,并没有单独的实现一个方法。

2. 被调用方:执行块代码

1> 要执行的代码,在 .h中定义一个块代码的属性,又被称作“回调方法”

2> 在需要的时候执行块代码



代理方法:

1. 调用方(代理)

1>遵守协议

2>设置代理,让委托方知道代理是谁

3>实现协议方法    -  类似给代码块传值

2. 被调用方(委托)

1>定义协议方法目的

 - 委托方知道让代理执行什么方法

 - 代理方知道实现什么方法

2>定义一个弱引用的delegate属性,跟代理建立联系

3>在需要的时候,通知代理执行协议方法

  - 定义一个块代码属性,便于调用方传递数值

  - 在需要的时候执行

Block在反向传值上有什么特点?

 - 简单

 - 所有代码都在一起,便于阅读,便于维护

block  &  delegate 如何选择?

- 如果回调方法比较少,1~2,最好不要超过3个,这个时候使用Block比较合适。

- 如果回调方法太多,会让代码显得臃肿,反而不好维护。

- 如果回调方法非常多,同时又不用每一个方法都必须实现,这个时候用delegate会比较方便。

你可能感兴趣的:(无标题文章)