摘要: 上一篇解读了 的三个重要的类的底层实现,本篇继续。 一、RACMulticastConnection 1.应用 : 用于当一个信号被多次订阅时,为了保证创建信号时,避免多次调用创建信号的block造成副作用,可以使用该类处理,保证创建信号的block执行一次。 2.源码实现 底层原理 创建信号 创建 阅读全文
posted @ 2017-07-19 17:09 飞鱼湾 阅读(365) 评论(0) 推荐(0)
摘要: 本着饮水思源的想法,面对`ReactiveCocoa`的强大功能,按捺不住心中的好奇心,于是走进其源码之中,一探`ReactiveCocoa`的魅力所在。虽然,耳闻其强大功能的核心是:信号,但一直不知道这个信号是如何产生、如何传递,又是如何被处理的。曾经以为信号传递是通知,但是真正读了源码后,才发现之前的想法有多不妥,而人家的实现又是多巧妙。 阅读全文
posted @ 2017-07-19 16:55 飞鱼湾 阅读(710) 评论(0) 推荐(0)
摘要: 上一篇介绍了`ReactiveCocoa`的常用类,已经基本满足项目中的简单应用要求,但是针对复杂的功能还需要其它的类来协同处理。`ReactiveCocoa`提供了强大的流程处理功能来解决复杂的问题,包括事件点击、代理、通知、事件同步和异步等等,可以简化代码体量,实现 **高聚合、低耦合** 的编程思想。 阅读全文
posted @ 2017-07-19 11:26 飞鱼湾 阅读(602) 评论(0) 推荐(0)
摘要: 作为函数式编程和响应式编程的代表`ReactiveCocoa`,自一出世便受到广大码农的热爱,结合`MVVM`编程模式,不仅能够方便的处理各种交互事件、降低模块间的耦合性,还能简化项目结构,降低阅读和维护的成本 阅读全文
posted @ 2017-07-19 11:13 飞鱼湾 阅读(321) 评论(0) 推荐(0)
摘要: `Block`是`iOS`开发中一种比较特殊的数据结构,它可以保存一段代码,在合适的地方再调用,具有语法简介、回调方便、编程思路清晰、执行效率高等优点,受到众多猿猿的喜爱。但是`Block`在使用过程中,如果对`Block`理解不深刻,容易出现`Cycle Retain`的问题。本文主要从`ARC`模式下解析一下`Block`的底层实现,以及`Block`的三种类型(栈、堆、全局)的区别。 阅读全文
posted @ 2017-07-19 10:14 飞鱼湾 阅读(588) 评论(2) 推荐(0)
摘要: 最近几年,函数式编程变得越来越流程,其代码简洁、副作用小、维护成本低等特点,使得许多其它的语言也开始支持函数式编程,比如`Java` 和 `C#`等。本文主要介绍一下函数式编程中的一个重要概念:`Monad`。 阅读全文
posted @ 2017-07-19 10:12 飞鱼湾 阅读(934) 评论(0) 推荐(0)
摘要: `Redis`是一个开源的`key-value`类型的存储系统,大部分数据存在于内存中,所有读写速度十分快。其支持的存储`value`数据类型有多种,如:`strings`、`hashes`、`lists`、`sets`、`sorted sets`等等,这些数据类型都支持`push/pop`、`add/remove`等丰富的操作,并且是原子性的。此外,`redis`还支持周期性的更新数据到磁盘或者追加到记录文件,来实现`master-slave`数据同步的功能。 阅读全文
posted @ 2017-07-19 09:59 飞鱼湾 阅读(1308) 评论(0) 推荐(0)
摘要: 网上关于`cocoapods`的教程很多,关于它的优点我不赘述;但是我根据多次安装的经验,把我遇到的问题写一下,希望对新手有所帮助。 阅读全文
posted @ 2017-07-18 09:39 飞鱼湾 阅读(265) 评论(0) 推荐(0)
摘要: `React Native`的出现,使的开发`iOS`代码出现了更便捷的方式。由于`RN`是使用脚本语言编写的,实现了“解释执行”的方式,而这种执行方式的修改只需替换脚步即可,不需要重新发布程序,热更新的方式极大的方便了迭代开发。 阅读全文
posted @ 2017-07-18 09:38 飞鱼湾 阅读(2838) 评论(0) 推荐(0)
摘要: `MBProgressHUD`是一个显示提示窗口的三方库,常用于用户交互、后台耗时操作等的提示。通过显示一个提示框,通知用户操作或任务的执行状态;同时,利用动画效果,降低用户等待的焦虑心理,增强用户体验。 阅读全文
posted @ 2017-07-18 09:30 飞鱼湾 阅读(587) 评论(0) 推荐(0)