特性对比
block | delegate | |
---|---|---|
安全性 | 容易产生循环引用 | |
可读性 | 代码集中更连贯,代码更少 | |
性能 | 性能开销比 delegate 多,因为 block 会涉及到栈区向堆区拷⻉等操作,时间和空间上的消耗都⼤于 delegate |
如何选择
- 回调方法较少时使用 block,比如网络请求;有多个回调方法使用 delegate,比如 tableview
- 临时性的回调使用 block,比如数组的枚举;只调用一次的回调且需要存储的,使用 delegate/block 均可,比如网络;可能调用多次的回调,需要存储,使用 delegate 更好,比如按钮的点击