首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
小峰子
掘友等级
iOS Developer
|
朴朴
尽力做坚持分享的开发者,用文字记录过程
获得徽章 5
动态
文章
专栏
沸点
收藏集
关注
作品
赞
19
文章 19
沸点 0
赞
19
返回
|
搜索文章
最新
热门
iOS底层-分类的加载分析
本文旨在通过分析分类的加载流程,类和分类分别在懒加载和非懒加载时的表现,完善所有类的加载流程。 上一篇文章类的加载分析分析了map_images的主要流程,此流程中最后为分类的加载部分,现在回头来解析下。 其先从macho中__objc_catlist段下读取分类,然后遍历读取…
iOS底层--类的加载分析
本文旨在分析dyld初始化主程序时,类结构是如何被加载的,类数据是如何处理的。这部分也隶属于main()函数前的流程。 上篇dyld是如何加载app的分析了dyld的流程,说明了在准备初始化主程序时,libObjc会来_objc_init()到对项目中所有的类结构进行初始化。因…
iOS底层 -- dyld是如何加载app的
本文旨在初步了解app启动前系统的行为,主要分析dyld的操作流程,这对于后续做启动优化是很有必要的。 dyld是苹果操作系统的动态链接器。dyld和操作系统的关系准确来说,操作系统通过映射的方式将它加载到进程的地址空间中。操作系统加载完dyld后,就把控制权交给dyld。当d…
iOS底层-消息转发流程分析
先来看个很经典的崩溃打印。一般这个日志前部分还会给出所调用的方法,我们可以借此很快找到原因所在,可以说是相当贴心了。然而, 苹果在方便我们的同时,你是否想过这个日志具体是在什么时候打印的,系统是靠什么来捕获这类型即将崩溃的信息,开发者是否也可以捕获呢。 消息发送后,经过一系列查…
iOS底层--方法查找流程分析(附面试坑点)
本文主要分析方法在底层的本质,方法发送的几种情况,方法查找流程等,结合cache_t,对消息发送流程有一个更宏观的理解。 如果不深入了解方法查找流程,可能会有被卡住。下面就是对方法查找流程的分析(最后附加答案)。 上篇文章iOS底层-cache_t流程分析说明了cache_t缓…
iOS底层-cache_t流程分析
本文旨在通过源码分析cache_t相关,如缓存策略,动态扩容等,了解方法查找的前置流程。因其与objc_msgSend流程有密切联系,而发送消息又是iOS方法的本质,故了解cache_t是有必要的。 根据这个结果,会发现前面三个cls还有一点规律可循,occupied每次+1,…
iOS底层 -- 类的本质分析
上文说到,对象通过isa和类关联,同个类型的对象可以多次创建,所以对象可以有多个。那么类呢,根据开发经验,很容易得出类在内存中只有一个,那究竟要怎么实锤呢。提供验证方式: 可以看到,在DATA段的_objc_classrefs内已经加载了CJPerson类,并指定了内存地址,说…
iOS底层-包罗万象的isa
上篇说到,alloc在开辟空间后也初始化了isa,从而把对象和类关联起来。所以对于对象来说,isa的基础作用就是和类进行绑定,告诉系统对象的归属。但是大部分nonpointer的isa不仅仅只是做指向,其内部还存储了大量的信息。 如果是TaggedPointer,后面就不执行,…
iOS底层 - alloc和init探索
众所周知,alloc和init是我们最熟悉的最简单的api,那你是否完全了解它呢,还是它是你最熟悉的陌生人。我们就从源码入手, 看看alloc和init究竟分别做了什么? 上述代码打印出来的结果为:24,16。 为什么结构体内是相同的结构,系统却分配了不同大小的内存呢,这就是系…
个人成就
文章被点赞
177
文章被阅读
39,624
掘力值
1,218
关注了
22
关注者
182
收藏集
0
关注标签
23
加入于
2017-08-22