iOS 查漏补缺 - LLVM & Clang

2020-03-18
阅读 28 分钟
3.6k
LLVM 是一个自由软件项目,它是一种编译器基础设施,以 C++ 写成,包含一系列模块化的编译器组件和工具链,用来开发编译器前端和后端。它是为了任意一种编程语言而写成的程序,利用虚拟技术创造出编译时期、链接时期、运行时期以及“闲置时期”的最优化。它最早以 C/C++ 为实现对象,而当前它已支持包括 ActionScript、Ada...

iOS 查漏补缺 - RunLoop

2020-03-16
阅读 67 分钟
2.2k
作为 iOS 查漏补缺系列,这篇文章是笔者探索 RunLoop 底层的一些知识点总结,同时也借鉴了网上一些优秀的 RunLoop 技术文章的内容。

iOS 查漏补缺 - 线程

2020-03-13
阅读 17 分钟
1.9k
多线程是我们开发和面试中都会遇到的一个重要概念,相比于其他编程语言和平台,iOS 的多线程使用起来要比较友好和易用一些。但是对于多线程的基本概念,我们还是需要重视起来,这对于我们探索 pthread、NSThread、GCD 以及 RunLoop 都大有裨益。

iOS 查漏补缺 - PerformSelector

2020-03-12
阅读 27 分钟
3.7k
performSelector 系列的函数我们都不陌生,但是对于它不同的变种以及底层原理在很多时候还是容易分不清楚,所以笔者希望通过 runtime 源码以及 GUNStep 源码来一个个抽丝剥茧,把不同变种的 performSelector 理顺,并搞清楚每个方法的底层实现,如有错误,欢迎指正。本文的代码已放在 Github ,欢迎自取

iOS 底层探索 - KVO

2020-02-24
阅读 30 分钟
2.7k
在 Objective-C 和 Cocoa 中,有许多事件之间进行通信的方式,并且每个都有不同程度的形式和耦合:NSNotification & NSNotificationCenter 提供了一个中央枢纽,一个应用的任何部分都可能通知或者被通知应用的其他部分的变化。唯一需要做的是要知道在寻找什么,主要是通知的名字。例如,UIApplicationDidReceiveMemor...

iOS 底层探索 - KVC

2020-02-24
阅读 28 分钟
1.9k
Key Value Coding 也即 KVC 是 iOS 开发中一个很重要的概念,中文翻译过来是 键值编码 ,关于这个概念的具体定义可以在 Apple 的官方文档处找到。

iOS 底层探索 - 类拓展和关联对象

2020-01-22
阅读 13 分钟
1.9k
A class extension bears some similarity to a category, but it can only be added to a class for which you have the source code at compile time (the class is compiled at the same time as the class extension).类拓展和分类很相似,但是前提是你拥有原始类的源码,并且是在编译时被附加到类上的。(类和类扩...

iOS 底层探索 - 分类的加载

2020-01-22
阅读 11 分钟
3k
libObjc 向 dyld 注册了回调 _dyld_objc_notify_register,当 dyld 把 App 以及 App 所依赖的一系列 Mach-O 镜像加载到当前 App 被分配的内存空间之后,dyld 会通过 _dyld_objc_notify_mapped 也就是 map_images 来通知 libObjc 来完成具体的加载工作,map_images 被调用之后会来到 _read_images

iOS 底层探索 - 类的加载

2020-01-21
阅读 20 分钟
2.7k
iOS 底层探索系列 iOS 底层探索- alloc & init iOS 底层探索 - calloc 和 isa iOS 底层探索 - 类 iOS 底层探索 - cache_t iOS 底层探索 - 方法 iOS 底层探索 - 消息查找 iOS 底层探索 - 消息转发 iOS 底层探索 - 应用加载 iOS 底层探索 - 类的加载 一、应用加载回顾 上一章我们对应用的加载有了初步的认识,我们知道...

iOS 底层探索 - 应用加载

2020-01-21
阅读 18 分钟
2.5k
App 从被用户在主屏幕上点击之后就开启了它的生命周期,那么在这之中,究竟发生了什么呢?让我们从 App 启动开始探索。在探索之前,我们需要熟悉一些前导知识点。

iOS 底层探索 - 消息转发

2020-01-19
阅读 14 分钟
2.8k
iOS 底层探索系列 iOS 底层探索- alloc & init iOS 底层探索 - calloc 和 isa iOS 底层探索 - 类 iOS 底层探索 - cache_t iOS 底层探索 - 方法 iOS 底层探索 - 消息查找 iOS 底层探索 - 消息转发 一、动态方法解析流程分析 我们在上一章《消息查找》分析到了动态方法解析,为了更好的掌握具体的流程,我们接下来直接...

iOS 底层探索 - 消息查找

2020-01-19
阅读 16 分钟
2.4k
iOS 底层探索系列 iOS 底层探索- alloc & init iOS 底层探索 - calloc 和 isa iOS 底层探索 - 类 iOS 底层探索 - cache_t iOS 底层探索 - 方法 iOS 底层探索 - 消息查找 一、objc_msgSend 汇编补充 我们知道,之所以使用汇编来实现 objc_msgSend 有两个原因: 因为 C 无法通过写一个函数来保留未知的参数并且跳转到一...

iOS 底层探索 - 方法

2020-01-11
阅读 9 分钟
1.7k
我们在前面探索了对象和类的底层原理,接下来我们要探索一下方法的本质,而在探索之前,我们先简单过一遍 Runtime 的知识点,如果读者对这块内容已经很熟悉了的话可以直接跳过第一章。

iOS 底层探索 - cache_t

2020-01-10
阅读 11 分钟
1.9k
上一篇我们一起探索了 iOS 类的底层原理,其中比较重要的四个属性我们都简单的过了一遍,我们接下来要重点探索第三个属性 cache_t,对于这个属性,我们可以学习到苹果对于缓存的设计与理解,同时也会接触到消息发送相关的知识。

iOS 底层探索 - 类

2020-01-10
阅读 11 分钟
1.6k
iOS 底层探索系列 iOS 底层探索 - alloc & init iOS 底层探索 - calloc 和 isa iOS 底层探索 - 类 我们在前面探索了 iOS 中的对象原理,面向对象编程中有一句名言: 万物皆对象 那么对象又是从哪来的呢?有过面向对象编程基础的同学肯定都知道是类派生出对象的,那么今天我们就一起来探索一下类的底层原理吧。 一、iO...

iOS 底层探索 - calloc 和 isa

2020-01-05
阅读 10 分钟
3.8k
上一篇文章主要我们探索了 iOS  对象的 alloc 和 init 以及对象是怎么开辟内存以及初始化的,如果在对象身上增加一些属性,是否会影响内存开辟呢?还有一个遗留问题就是通过 calloc ,我们的对象有了内存地址,但是对象结构里面的 isa 是怎么关联到我们的对象的内存地址的呢。

iOS 底层探索 - alloc & init

2020-01-04
阅读 9 分钟
2.9k
作为 iOS 开发者,我们每天打交道最多的应该就是对象了,从面向对象设计的角度来说,对象的创建以及初始化是最基础的内容。那么,今天我们就一起来探索一下 iOS 中最常用的 alloc 和 init  的底层是怎么实现的吧。