notification delegate block 数据通信的三种方式对比

iOS中数据通信常用的有notification delegate block 的三种方式

 

什么场景下需要哪种形式呢?

这三种都是实时的。

notification:特点: 一对多

最简单,最容易理解,但也最容易被滥用。管理起来并不方便。

使用这种方式,一般情况下,通知多方进行处理。或者不方便与消息接收方进行delegate,block方式的数据通信的时候。

比如项目中的登录,登陆成功后,有需要刷新首页,获得用户信息,账户信息,保存token等一系列的操作。涉及到数据层,界面层,等多方。

这种情况下,如果用delegate,block方式,就不方便。因为这两种是一对一的通信方式。

缺点:

1.使用完毕后,要时刻记得注销通知,否则将出现不可预见的crash。

2. key不够安全,编译器不会监测是否被通知中心正确处理。

3.调试的时候动作的跟踪将很难进行。

 

delegate: 一对一

缺点实现delegate 方法

层层委托,加大代码之间的耦合性

 

block: 一对一

闭包是一个能够访问其他函数内部变量的函数。

官方文档中也提到了几种Block的使用场合。

任务完成时回调处理

消息监听回调处理

错误回调处理

枚举回调

视图动画、变换

排序

1.语法简洁,实现回调不需要显示的调用方法,代码更为紧凑。

2.增强代码的可读性和可维护性。

3.配合GCD优秀的解决多线程问题。

优点:不需要实现delegate方法,直接在block里进行处理。

 

缺点:

1.Block中得代码将自动进行一次retain操作,容易造成内存泄露。

2.Block内默认引用为强引用,容易造成循环引用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值