1.共同的作用:
Block 和 Delegate中的方法都可以理解成回调函数,当某件事情发生的时候取执行一段代码片段
2.Block(代码块)
优点:是一种轻量级的回调,能够直接访问上下文,使用块的地方和块的实现地方在同一个地方,使得代码组织更加连贯
3.Delegate(代理)
相对来说是重量级的回调
缺点:
因方法的声明和实现分离开来,代码的连贯性不是很好
代理很多时候需要存储一些临时数据
优点:
- 代理的回调函数可以是一组多个函数,在不同的时机调用不同的回调函数
4.如何选择使用哪一种
1.当回调函数多于3个的时候,采用代理比较好
2.使用代码块容易造成循环引用,代理不会出现该问题
3.其他情况下优先考虑代码块