Runtime源码解析-类的加载之_objc_init 前言 在app启动后,会把可执行文件加载到内存中。苹果是用过dyld它是一个动态链接器,用来链接库。 到底dyld做了...
Runtime源码解析-类的加载之_objc_init 前言 在app启动后,会把可执行文件加载到内存中。苹果是用过dyld它是一个动态链接器,用来链接库。 到底dyld做了...
Runtime源码解析-消息发送 在我们平时开发项目中,除了频繁的创建对象之外,用的最多的就是调用方法。本篇文章就是主要研究方法是如何调用的。 前言 在 Objective-...
Runtime源码解析-类中cache 首先我们再看一眼objc_class类的定义,本篇文章主要研究cache。 cache的作用根据时间局部性原理,用来存储已经被调用过的...
Swift底层原理-Sequence与Collection Sequence协议来说,表达的是既可以是一个有限的集合,也可以是一个无限的集合,而它只需要提供集合中的元素和如何...
Swift底层原理-Codable Swift 4.0 支持了一个新的语言特性—Codable,其提供了一种非常简单的方式支持模型和数据之间的转换。 Codable能够将程序...
Swift底层原理-Mirror 反射:是指可以动态获取类型、成员信息,在运行时可以调用方法、属性等行为的特性。 对于一个纯swift类来说,并不支持直接像OC runtim...
Swift底层原理-协议 协议的基本用法 协议的定义 如若想使用协议,那么我们需要使用protocol关键字来申明协议。 协议可以用来定义方法、属性、下标的声明,协议可以被枚...
Swift底层原理-闭包 函数类型 在Swift中函数本身也有自己的类型,它由形式参数类型,返回类型组成。 函数也是一个引用类型 那么函数类型的本质是什么呢,我们打开源码,在...
Swift底层原理-枚举 枚举基本用法 在Swift中可以通过enum 关键字来声明一个枚举,如下: 原始值 枚举的原始值特性可以将枚举值与另一个数据类型进行绑定 在Swif...
Runtime源码解析-类中bits 首先我们再看一眼objc_class类的定义,本篇文章研究bits到底存储了哪些信息 然后进入到class_data_bits_t结构中...
Swift底层原理-方法调度 我们知道,在OC中方法的调用是通过objc_msgSend来发送消息的;那么在Swift中,方法的调用时如何实现的呢? 而且在swift中不仅仅...
Runtime源码解析-类 在前面我们探究对象、以及alloc流程时,发现了isa_t和类之间有关联,那我们先具体探究一下类的结构。 类 objc_class 从继承关系我们...
Swift底层原理-内存管理 Swift语言延续了和Objective-C语言一样的思路进行内存管理,都是采用引用计数的方式来管理实例的内存空间; 在结构体与类中我们了解到S...
Runtime源码剖析-对象 预备知识 如果大家对联合体、位域相关知识不够熟悉的话,请参考联合体+位域[https://github.com/AngaoTu/AngaoTu-...
Swift底层原理-属性 存储属性 存储属性是一个作为特定类和结构体实例一部分的常量或变量。 存储属性要么是变量存储属性 (由 var 关键字引入)要么是常量存储属性(由 l...
Runtime源码解析-alloc 前言 从这篇文章开始,我们进行OC底层研究。主要研究方向包括了:对象和类的具体实现,属性、方法、协议等是如何存储的,方法是如何调用,类和c...
Swift底层原理-类与对象 准备工作 该系列文章,主要通过Swift底层源码进行研究。 可以通过该网址下载Swift源码Swift源码[https://github.com...
联合体 定义 联合体也叫共用体,由不同的数据类型组成,其变量互斥,存储方式是所有成员共用一个段内存,共同体同一时刻只能保存一个成员的值,如果对新的成员赋值,就会将原来成员的值...
iOS中malloc和calloc源码分析 calloc 我们知道在iOS创建对象的alloc方法中,最终通过调用calloc方法来开辟内存。如果这里具体流程不够清楚的话,可...