首先了解一下程序执行的四个步骤
预处理, 展开头文件/宏替换/去掉注释/条件编译
编译, 检查语法,生成汇编
汇编, 汇编代码转换机器码 ,汇编生成的文件是 .o类型的。
链接 链接到一起生成可执行程序
main函数之后
函数 initialize 是在main函数之后调用的,initialize是 在这个类接收第一条消息之前调用。
调用特点:
1.父类的initialize方法会比子类先执行
2.当子类未实现initialize方法时,会调用父类initialize方法,子类实现initialize方法时,会覆盖父类initialize方法.
3.当有多个Category都实现了initialize方法,会覆盖类中的方法,只执行一个(会执行Compile Sources 列表中最后一个Category 的initialize方法)
main函数之前
加载动态链接库需要做指针调整和符号绑定。
OC的runtime初始化包括class和category的注册、selector唯一性的检查。
初始化包括调用+(void)load方法的调用,用attribute((constructor))修饰的函数的调用、创建C++静态全局变量等。