ReactiveCocoa源码拆分解析(三)】的更多相关文章

(整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 这一章节主要讨论信号的“冷”与“热” 在RAC的世界里,信号是有“冷”(被动passive)与“热”(主动active)之分的.而且一不小心,这就可能成为了严重的问题,具体可以参见案例http://tech.meituan.com/talk-about-reactivecocoas-cold-signal-and-hot-signal-part-2.…
(整个关于ReactiveCocoa的工程可以在https://github.com/qianhongqiang/QHQReactive下载) ReactiveCocoa的介绍我就不说了,可以自行百度.ReactiveCocoa这个框架目前来看很热门,但是不流行.归根到底,是学习成本太高,光看头文件,你几乎就根本不知道该如何使用.ReactiveCocoa内部实现大量使用了block,在block嵌套比较深的情况下,阅读源码也变得困难.我这里就给大家做个抽离,分解各个模块.因为我刚开始阅读时,我…
(整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 上面抽丝剥茧的把最主要的信号机制给分离开了.但在RAC中各种操作也是必不可少的,一些复杂的操作符也是有一些基础操作拼接组合而来,有点搭积木的味道. 那我沿着之前的思路,写一些简单的操作符是如何实现的. 操作符之concat(拼接) concat 使用示例 QHQSignal *demoOriginSignal = [QHQSignal createS…
(整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 上一章节简要的说明了如何实现的热信号.但是像那么写,貌似不是非常优雅.这一章节我们会把冷热信号转换写的跟ReactiveCocoa一样优雅. ReactiveCocoa内部是如何实现冷热信号转换的呢?我们来看个例子 RACSignal *replayLazilySignal = [[RACSignal createSignal:^RACDisposa…
(整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 在这篇博客中,我将把ReactiveCocoa中的擦作符做具体的介绍,附上对应的应用场景,是持续更新的.如果有的场景不合适,或者有更好的使用场景,可以留言,我会改进的. 拼接 - (RACSignal *)concat:(RACSignal *)signal; 拼接两个信号,合成的信号,在self发送sendCompleted后,发送新signal的…
(整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) RAC为了实现优雅的信号绑定,可谓使尽浑身解数,不仅是这个,整个RAC中对宏的使用都很有学习价值.我这里简单简单的说明下,我们在实际开发中常用到的宏,有些宏我也没有研究的很透彻,就不班门弄斧了,大家可以参考下别的学习资料. 以下面的例子入手: RAC(self.noneDataTipView,hidden) = [RACSignal combineL…
(整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 好多天没写东西了,今天继续.主要讲解RAC如何于UI空间实现响应流的. 随手找个按钮响应的RAC实现作为示例,然后我们去做一个简单的实现 [[_HiddenBtn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) { _HiddenBtn.hid…
深入理解NIO(三)—— NIO原理及部分源码的解析 欢迎回到淦™的源码看爆系列 在看完前面两个系列之后,相信大家对NIO也有了一定的理解,接下来我们就来深入源码去解读它,我这里的是OpenJDK-8u60版本,建议大家也下一份放ide里和我一起看会比较好理解.(这里主要介绍Selector,Buffer第一篇有提到一点,Channel也不过是些Buffer的操作方法而已,这里就不提及了,大家感兴趣可以自己去看) 老哥行行好,转载和我说一声好吗,我不介意转载的,但是请把原文链接贴大点好吗 ope…
在上文<使用CEF(2)- 基于VS2019编写一个简单CEF样例>中,我们介绍了如何编写一个CEF的样例,在文章中提供了一些代码清单,在这些代码清单中提到了一些CEF的定义的类,例如CefApp.CefClient等等.它们具体有什么作用,和CEF的进程架构有什么关系呢?本文将逐一进行介绍. CEF的进程架构 CEF3 runs using multiple processes. The main process which handles window creation, painting…
mybatis 3.x源码深度解析与最佳实践 1 环境准备 1.1 mybatis介绍以及框架源码的学习目标 1.2 本系列源码解析的方式 1.3 环境搭建 1.4 从Hello World开始 2 容器的加载与初始化 2.1 config文件解析XMLConfigBuilder.parseConfiguration 2.1.1 属性解析propertiesElement 2.1.2 加载settings节点settingsAsProperties 2.1.3 加载自定义VFS loadCust…