1、代码->内存
2、动静态库加载到->内存
3、objc_init->objc
a、应用程序加载原理
可执行的二进制文件->加载到内存
静态库和动态库区别:链接
源文件->预编译->编译->汇编->链接(静态链接、动态链接)->可执行文件mach-o
dyld(动态链接器):app启动->加载libsystem->向runtime注册回调函数(_dyld_objc_notify_register(libobjc.dylib))->加载image(镜像文件:库 映射(将磁盘内的代码找了一份替身加载到内存)一部分到内存)->map_images/load_images ->main函数
image list :控制台操作 查看所有链接的动态库
b、dyld分析:动态链接器 dyld_start(断点没停在start,因为真正走的不是start)->_main
dyldbootstrap::start找到命名空间(dyldbootstrap) 然后找方法(start)相当于类->方法