RxSwift-高阶函数
RxSwift操作符
操作符可以帮助大家创建新的序列,或者变化组合原有的序列,从而生成一个新的序列。比如filter
过滤,map
转换等,具体可参考文档Operator - 操作符。
filter
,map
等操作符都是高阶函数,高阶函数接受一个或多个函数作为输入,最后输出一个函数。下面我们就以map
为例进行分析。
RxSwift-如何用协议实现一个命名空间
RxSwift简介
RxSwift是一个函数响应式框架,使用到的是FRP(函数响应式编程)编程思想。它是通过构建函数操作数据序列,然后对这些序列做出响应的编程方式。基本的使用可以参考官方的RxSwift中文文档。
[iOS底层]-autoreleasepool底层原理
autoreleasepool的基本原理
下载Demo,通过使用Clang编译器把OC文件编译成C++文件的学习,我们已经知道如何把OC编译成C++。接下来就把main.m
编译成main.cpp
,得到@autoreleasepool
的C++的底层源码:
[iOS底层]-objc_msgSend慢速查找流程
慢速查找汇编部分
在[iOS底层]-objc_msgSend快速查找原理中我们分析了缓存命中的情况,则会返回相应的imp
,不过CheckMiss
和JumpMiss
的情况下要如何进行处理我们还没有进行分析。根据CheckMiss
和JumpMiss
的源码,我们发现他们都会跳转到__objc_msgSend_uncached
。
[iOS底层]-objc_msgSend快速查找原理
方法是如何读取的?
在[iOS底层]-cache_t分析一文里,我们知道了方法是如何缓存起来的,缓存的目的是为了加快方法的查找速度,那么我们在调用方法的时候是如何去读取这些缓存的呢?
[iOS底层]-SEL和IMP
SEL和IMP是什么?
- SEL:方法编号,就像是一本书的目录,SEL是每章的标题。
- IMP:函数指针地址,IMP就像是页码,通过SEL和对应IMP,我们就能找到函数的实现代码存放位置。
Copyright © 2015 Powered by ljcoder, 粤ICP备20061303号-1, Theme used GitHub CSS.