ReactiveCocoa这个框架是做什么用的本篇博客就不做过多赘述了,什么是"响应式编程"也不多聊了,自行Google吧.本篇博客的主题是解析ReactiveCocoa框架中的核心模块ReactiveSwift中的两个核心类的实现,也就是对Event和Observer这两个类进行解析.之所以把这两个类放在一块聊,是因为这两个类比较独立,可以说是ReactiveSwift中的两个原子类.Event确切的说是一个枚举,其中有几种事件,而Observer类的对象就是这些事件的发送者.所以把…
今天博客我接着上篇博客的内容来,上篇博客我们详细的看了ReactiveSwift中的Observer已经Event的代码实现.接下来我们来看一下ReactiveSwift中的结构体Bag的实现.Bag:袋子,顾明思议,就是用来装东西的,我们暂且将Bag称之为容器.在ReactiveSwift中的Bag主要是用来存储Signal对象的,我们在后期介绍ReactiveSwift源码时会陆陆续续的看到Bag的身影. 因为Bag这个结构体在ReactiveSwift中比较独立,所以我们本篇博客就来聊一下…
上篇博客我们对Signal的基本实现以及Signal的面向协议扩展进行了介绍, 详细内容请移步于<Signal中的静态属性静态方法以及面向协议扩展>.并且聊了Signal的所有的g功能扩展都是放在Signal所实现的SignalProtocol协议的扩展中的.本篇博客就沿袭上篇博客的内容,我们来聊一下SignalProtocol的部分扩展.本篇博客我们主要来聊一下对Signal添加Observer的observe()方法扩展的具体实现,并且聊一下Signal的Map和Filter相关的功能扩展…
上篇博客我们详细的聊了ReactiveSwift源码中的Bag容器,详情请参见<ReactiveSwift源码解析之Bag容器>.本篇博客我们就来聊一下信号量,也就是Signal的的几种状态以及Signal的基本实现.当然本篇博客所解析的源码会用到上篇博客介绍的Bag容器.本篇博客我们先通过一个示例来看一下Signal是如何工作的,具体说来就是Signal是如何与Observer关联的,来聊一下Observer是如何观察和Signal发出的信号的. 之前我们也详细的聊过Observer和Eve…
vueJs 源码解析 (三) 具体代码 在之前的文章中提到了 vuejs 源码中的 架构部分,以及 谈论到了 vue 源码三要素 vm.compiler.watcher 这三要素,那么今天我们就从这三要素逐步了解清楚 好了,话不多说, let's do it 在这之前,我们需要 对上文中讲到的 vuejs 的源码是 flow 写法的问题进行一个简化. 毕竟还有有工具是可以解决的. 可以用babel-plugin-transform-flow-strip-types去转化下即可. 1. npm i…
在前面几篇博客中我们详细的聊了ReactiveSwift中的Bag.Event.Observer以及Signal的使用方式和代码实现.那么在接下来的这几篇博客中,我们就依附于之前博客的基础上来聊一聊SignalProducer的用法以及内部的代码实现.从SignalProducer的名字中,我们容易知道,SignalProducer是信号量的生产者,确切的说,SignalProducer基于Signal的又一层封装.扩充了Signal的使用方式,使其更贴近于一些业务场景,比如网络的请求等. 接下…
今天博客我接着上篇博客的内容来,上篇博客我们详细的看了ReactiveSwift中的Observer已经Event的代码实现.接下来我们来看一下ReactiveSwift中的结构体Bag的实现.Bag:袋子,顾明思议,就是用来装东西的,我们暂且将Bag称之为容器.在ReactiveSwift中的Bag主要是用来存储Signal对象的,我们在后期介绍ReactiveSwift源码时会陆陆续续的看到Bag的身影. 因为Bag这个结构体在ReactiveSwift中比较独立,所以我们本篇博客就来聊一下…
本篇博客我们就来聊一下combineLatest()的使用以及具体的实现方式.在之前的<iOS开发之ReactiveCocoa下的MVVM>的博客中我们已经聊过combineLatest()的用法,虽然是使用老版本的ReactiveCocoa和Objective-C语言介绍的,不过使用原理上都是一致的.都是将两个信号量进行合并,当其中一个信号量发出Value事件时,如果另一个信号量之前也发送过Value事件,那么就取出最后一个事件的Value值与当前发送的事件值进行合并,然后将合并后的值发送给…
为了之后博客的进行,本篇博客我们就来聊一下ReactiveSwift框架中的Lifetime类的具体实现.从Lifetime这个名字中我们就这道,就是生命周期.在ReactiveSwift中使用Lifetime来标记一个对象的生命周期,其实主要功能还是将对象的deinit()析构函数通过发送信号量将其回调出来.接下来我们就来看一下Lifetime类的实现.Lifetime类与Event和Observer相似,也是比较原子性的类,以原子组件的形式存在于ReactiveSwift中. 下方我们会先给…
上篇博客我们聊完SignalProducer结构体的基本实现后,我们接下来就聊一下SignalProducerProtocol延展中的start和lift系列方法.SignalProducer结构体的方法扩展与Signal的扩展相同,都是面向协议的扩展.首先创建了一个SignalProducerProtocol协议,使SignalProducer在延展中遵循SignalProducerProtocol协议.然后我们再对SignalProducerProtocol进行扩展.这样一来,SignalP…