iOS之深入解析类方法+load与+initialize的底层原理
【摘要】
一、前言
Objective-C 作为一门面向对象语言,有类和对象的概念。编译后,类相关的数据结构会保留在目标文件中,在运行时得到解析和使用。在应用程序运行起来的时候,类的信息会有加载和初始化过程。...
一、前言
- 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 方法的调用顺序是不确定的。
文章来源: blog.csdn.net,作者:Serendipity·y,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/Forever_wj/article/details/119996074
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)