iOS之深入解析类方法+load与+initialize的底层原理
Posted Forever_wj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS之深入解析类方法+load与+initialize的底层原理相关的知识,希望对你有一定的参考价值。
一、前言
- Objective-C 作为一门面向对象语言,有类和对象的概念。编译后,类相关的数据结构会保留在目标文件中,在运行时得到解析和使用。在应用程序运行起来的时候,类的信息会有加载和初始化过程。
- App 启动到执行 main 函数之前,程序就执行了很多代码。执行顺序为:
-
- 将程序依赖的动态链接库加载到内存;
-
- 加载可执行文件中的所有符号,代码 runtime 解析被编译的符号代码;
-
- 遍历所有的 class;
-
- 按继承层级一次调用 Class 的 load 和 category 的 load 方法。
- 就像 Application 有生命周期回调方法一样,在 Objective-C 的类被加载和初始化的时候,也可以收到方法回调,可以在适当的情况下做一些定制处理,而这正是 load 和 initialize 方法可以做到的。
二、+load
- +load 方法是当类或分类被添加到 Objective-C runtime 时被调用的,实现这个方法可以让我们在类加载的时候执行一些类相关的行为。子类的 +load 方法会在它的所有父类的 +load 方法之后执行,而分类的 +load 方法会在它的主类的 +load 方法之后执行。但是不同的类之间的 +load 方法的调用顺序是不确定的。
以上是关于iOS之深入解析类方法+load与+initialize的底层原理的主要内容,如果未能解决你的问题,请参考以下文章
IOS杂笔- 7(类方法load与initialize的区别 浅析)
IOS杂笔- 7(类方法load与initialize的区别 浅析)
iOS +load方法与 +initialize 方法调用顺序