
iOS deep dive
文章平均质量分 79
深入理解
Eric217
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[iOS 理解] Swift Runtime (1) 类
简单介绍 Swift 根类的内存布局;理解 Swift Runtime 和 Objc Runtime 的桥梁,为我们实现无限功能提供了基础。原创 2023-02-25 15:19:08 · 1083 阅读 · 0 评论 -
[iOS 理解] 为什么 objc_msgSend 必须用汇编实现
Runtime 源码,objc_msgSend 使用汇编实现,为什么不使用 C语言 实现?为了解决问题,我们直接复现问题:使用 C 实现一个简化的 objc_msgSend ... #消息机制原创 2023-02-21 01:43:01 · 260 阅读 · 0 评论 -
[iOS 理解] 消息机制 & NSProxy
消息机制是什么?NSProxy 意义何在?二者有何关联?下面会深入每一个调用发现其中的奥秘。原创 2020-03-01 02:05:31 · 506 阅读 · 1 评论 -
[iOS 理解] 内存管理 自动释放池
ARC 无需显式调用 retain release autorelease编译器在正确的位置加上管理对象引用计数的函数。对象的所有权修饰符__strong:赋值时,旧的 release,新的 retain__weak:需要操作 weak 表,单独分析__unsafe_unretained:当作是纯C语言指针的赋值__autoreleasing:会把对象加入自动释放池,文章最后有一个经典案例内存管理核心思想:谁创建谁释放最底层函数实现。原创 2020-03-04 17:12:21 · 554 阅读 · 1 评论 -
[iOS 理解] weak
前面内存管理的文章写了其他的修饰符,__weak 单独在本文写除了 __weak 之前,还有一些修饰符与内存管理有关:__block 要单开一篇文章;Core Foundation 对象 与 OC 对象间的强制转换与内存管理问题先介绍一下(ARC)。原创 2020-03-05 02:55:56 · 291 阅读 · 1 评论 -
[iOS 理解] block
第一步,初步理解 网上博客千篇一律的内容,我找了一篇质量还不错的 看完那篇其实就差不多够了,但我这还有一些补充的东西。 第二步 对照源码自己看 官网链接不是 Xcode 项目,如果想看的舒服需要自己配 Xcode 关键字高亮、点击跳转 我这有配好的链接 block 核心文件只有一个,只有几百行,就是几个函数,可以自己分析,over。 (必须先完成第一步) 下面是我的分析。。。 现在都是 ARC,...原创 2020-03-07 16:49:58 · 258 阅读 · 0 评论 -
[iOS 理解] 程序加载过程
点击 app 按钮 IOKit 封装 event,通过 mach port 发给 SpringBoard 这部分是响应者链,在另一篇写过了,省略 SpringBoard 在处理函数中,先调用 fork linux 0.1 中 fork 大致实现是: fork() _syscall 宏 int 0x80, 子功能号(int 是中断指令) 跳转到 0x80 对应的中断描述符记录的处理函数 调用...原创 2020-03-14 01:38:16 · 817 阅读 · 0 评论 -
[iOS 理解] RunLoop
理解 runloop 步骤 1 下载源码 2 让 Makefile管理的 C/C++ 项目使用Xcode阅读时源码高亮、支持跳转 3 先学习这篇博客 建议第一天看一遍这篇文章,不求理解 第二天再结合源码看,同时追求理解 第三天只看没理解的地方,并且自己悟 这类东西最好不要一天学完 结束 自己总结核心逻辑 通知要进入循环 开始循环 通知要执行 timer 回调 通知要执行 source 回调 ...原创 2020-03-04 13:45:30 · 250 阅读 · 0 评论 -
[iOS 理解] 响应者链
本文将会解析从触摸到屏幕开始,发生了什么; 响应者怎么获得事件,响应者是什么,事件是什么,让谁响应,怎么响应? 交互方式 目前有(未来可能有其他方式): Touch 触摸 Press 按压,物理按钮 Motion 运动,摇一摇 Remote-Control 远程控制,AirPods 以上交互,都会产生用户事件。本文仅以第一种作例子,触类旁通。 触摸屏幕 当前 App 的所有用户事件,都放入该 ...原创 2019-12-05 18:15:16 · 714 阅读 · 0 评论 -
[iOS 理解] copy
NSObject 有 copy 和 mutableCopy 两个成员。这两个函数是分别直接返回 copyWithZone 和 mutableCopyWithZone 的返回值。 (注意,不是这个: + (id)copyWithZone:(struct _NSZone *)zone OBJC_ARC_UNAVAILABLE; 这个是 MRC 项目可用,ARC 下直接无视该函数;若涉及到 Zon...原创 2019-12-23 19:03:48 · 1032 阅读 · 1 评论 -
[iOS 理解] instanceSize
class_ro_t 中的 instanceSize 编译器把某个类的 OC 代码转为 C 代码时,子类结构体第一个变量,是父类结构体: struct Child { struct Parent parent_ivars; int child_ivar; }; 所以在内存布局上相当于把父类变量及当前类变量都放在一起,然后按照C结构体大小规则计算: 1 结构体每个成员相对于起始...原创 2020-03-01 17:21:26 · 468 阅读 · 0 评论