block 和 delegate 的区别

特性对比

block delegate
安全性 容易产生循环引用
可读性 代码集中更连贯,代码更少
性能 性能开销比 delegate 多,因为 block 会涉及到栈区向堆区拷⻉等操作,时间和空间上的消耗都⼤于 delegate

如何选择

  1. 回调方法较少时使用 block,比如网络请求;有多个回调方法使用 delegate,比如 tableview
  2. 临时性的回调使用 block,比如数组的枚举;只调用一次的回调且需要存储的,使用 delegate/block 均可,比如网络;可能调用多次的回调,需要存储,使用 delegate 更好,比如按钮的点击
  1. 特性对比
  2. 如何选择