ios runtime加载流程

1、动态库加载DllMain各种初始化

2、_objc_init各种初始化:environ init 、 tls init 、static init、lock init 、exception init

3、mapimage里面主要工作是load image也就是加载资源,是 第一次的时候sel init、autoreleasepool初始化、sidetable init

4、_read_images开始读取资源,readclass发现所有的class,可以理解为读取class信息,具体就是往map里面存入class的信息,然后再进行重新映射这里可能是对于一些需要重新映射的class进行重新映射(修复类列表和懒加载列表还没有映射的情况),下面就是注册所有的sel方法,然后就是readprotocol遍历head里面class对应的protocol都读进来存入到map,和class类似,也需要remap一下protocol,然后实现所有的class,这时候把class的data部分进行实例化,需要注意的是data现在还只是一个空的并没有内容,然后构建父子结构、元类结构,然后methodizeClass函数里会赋值data的内容把methods、properties、protocols加进去,再把category里面的内容attach进来,具体说下category里面的内容处理是会插入到class原有的methodlist 、protocollist、property list 前面的,所以寻址的时候,是先找到category的实现,也就是实现了对于class原有实现的覆盖;通过源码的阅读发现后面才是真正的进行category list的创建和存储,存储到map里面,然后再attach到class上,我认为在前面的methodizeClass函数主要没有对于category的添加,而实际的添加就是在后面这一块代码进行的category的处理。



盗图忘了再哪看了,需要我删除的联系我 0 0 。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,814评论 0 9
  • 本文载自: http://blog.csdn.net/a316212802/article/details/49...
    MrLuckyluke阅读 2,499评论 1 7
  • 一、概述 Objective-C语言是一门动态语言,它将很多静态语言在编译和链接期所做的事推迟到运行时处理。这种动...
    Fly晴天里Fly阅读 1,223评论 0 6
  • 人为什么觉得心累呢? 人为什么觉得心累呢?人之所以会心累,就是常常徘徊在坚持和放弃之间,举棋不定。生活中总会有一些...
    xcy无名阅读 263评论 0 0
  • 真是生病的时候才知道健康的好处。从上个礼拜的脊椎有点变形,到隔天开始喉咙痛,再到今天开始各种感冒的症状冒出来。看来...
    杨黎黎Lily阅读 226评论 0 0