以我自己的亲身经历以及朋友和群友们的反馈,现在的iOS面试问的是越来越深了,而很多朋友和笔者自己也发现,光读过一些runtime的技术文章,还不够应付一些比较有深度的面试。因此阅读runtime源码的迫切性也是越来越高了。
以前读过几次runtime的源码,也做了一些笔记,但是还是觉得不够系统。故特意想总结一下,写一个runtime源码解析系列的文章。
纸上得来终觉浅绝知此事要躬行
如果认真读完这个系列的文章,类似的面试题应该难不倒了。
- Class,IMP,SEL,id,isa等的实质
- 方法加载流程
- 方法调用流程
- 完整的消息转发流程
- 分类为啥不能增加属性
- load和initialize
- autoreleasepool的实现原理
- weak的实现原理(含自动置空原理)
- retain和release及alloc,init,dealloc的源码实现
阅读指南
首先请把 study-objc-runtime工程下载下来,然后配合工程里面的HelpRead.md文件阅读。
举例如下:
如想阅读对象的定义,那么在工程中直接搜索jack.deng 对象的定义
jack.deng 对象的定义
由于添加了关键字索引,所以阅读相关的源码就会比较方便找到对应的方法,此项目里面也增加了很多注释,方便阅读。
目录
runtime源码解析--阅读指南
runtime源码解析(前传1)--Mach-O格式
runtime源码解析(前传2)--Mach-O格式和runtime
runtime源码解析--基本数据结构
runtime源码解析--方法加载(runtime初始化)
网友评论