看了一些大大们的讲解,总结下。
block:
注重结果
blcok运行成本比较高,block出栈需要把,block内的数据从栈区复制到堆区,对象就是引用计数+1
一对一
blcok出现循环引用时,在引用那一个环节MRC加上__weak,ARC__block.
delegate:
1.注重过程,比如发起一个网络请求,想知道请求是否开始,是否接受什么的,这个时候使用delegate比较合适。
2.delegate运行的成本比较低,delegate只是保存了一个指针对象,直接回调没有额外消耗。
3.一对一
4.在某一时间,只能有一个委托,连接到某一对象
5.可以在声明delegate的时候MRC用assign,ARC用weak,可防止循环引用。
通知:
一对多