响应式编程的概念:
在网上流传一个非常经典的解释“响应式编程的概念”:在程序开发中,a=b+c,赋值之后b或者c的值变化后,a的值不会跟着变化。响应式编程,目标就是,如果b 或者c的数值发生变化,a的数值会同时发生变化。
iOS中常用响应式编程有:代理、通知、block
三种编程的区别
NotificationCenter 通知中心:
1、“一对多”,在APP中,很多控制器都需要知道一个事件,应该用通知;
delegate 代理委托:委托其实是一种设计模式,通俗一点来讲就是当自己有需求要处理但是不方便的时候,就建立一个委托,请别人来帮忙处理。
1、“一对一”,对同一个协议,一个对象只能设置一个代理delegate,所以单例对象就不能用代理;(单例只有一个对象,如果多次设置代理,代理被重新赋值,只有最后一次设置代理能够响应协议方法。)
2、代理更注重过程信息的传输:比如发起一个网络请求,可能想要知道此时请求是否已经开始、是否收到了数据、数据是否已经接受完成、数据接收失败
3、如果我们要实现一个delegate委托,就先要先定义protocol(协议),在指定收到回调的类中去实现协议中的函数,如果没有实现,编译器就会报警告;(delegate需要定义协议方法,代理对象需要实现协议方法并且需要建立代理关系才可以实现通信。)
block(闭包) :
1、block和delegate一样,一般都是“一对一”之间通信交互
2、相比代理,block写法更简练,不需要写protocol、函数等等
3、block注重结果的传输:比如对于一个事件,只想知道成功或者失败,并不需要知道进行了多少或者额外的一些信息
4、block需要注意防止循环引用
5、block常常结合typedef来使用,用自己定义的类型去创建block显得更加的简单便捷
网友评论