block、delegate比较

本文深入对比了Block与Delegate两种通信机制。Block使代码更连贯,但存在循环引用风险;Delegate则更安全,适合多个通信事件,代码直观易维护。文章详细分析了两者优缺点及适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的修养

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值