block、delegate比较

block、delegate比较:

block和delegate都能实现回调传值,完成对象之间的通信和交互。

block优缺点

代码变得连贯,使用也简单,一般不需要存储临时数据,能够直接访问上下文。

block缺点:
  • block不够安全,使用 block 时稍微不注意就形成循环引用,导致对象释放不了。这种循环引用,一旦出现就比较难检查出来。

  • block效率低,block出栈需要将使用的数据从栈内存拷贝到堆内存

  • 在多个通信事件的时候,block显得不够直观也不易维护。

delegate优缺点:
delegate优点:
  • delegate相对于block比较安全,因为 delegate 方法的声明和实现是分离的,不会引用上下文,也就不容易出现循环引用

  • delegate效率高一点,delegate只是保存了一个对象指针

  • 在多个通信事件的时候,delegate显得直观也易维护。

delegate缺点:
  • delegate的方法的声明和实现分离,代码的连贯性不好,不易阅读。

  • 很多时候需要存储一些临时数据

block和delegate使用场景:

如果对象之间只有1-2个通信事件的时候使用block,如果超过3个使用delegate

你可能感兴趣的:(iOS之OC,ios,objective-c)