main之前的加載過程
1)dyld 開始將程序二進制文件初始化
2)交由ImageLoader 讀取 image,其中包含了我們的類,方法等各種符號(Class、Protocol 、Selector、 IMP)
3)由于runtime 向dyld 綁定了回調(diào),當image加載到內(nèi)存后,dyld會通知runtime進行處理
4)runtime 接手后調(diào)用map_images做解析和處理
5)接下來load_images 中調(diào)用call_load_methods方法,遍歷所有加載進來的Class,按繼承層次依次調(diào)用Class的+load和其他Category的+load方法
6)至此 所有的信息都被加載到內(nèi)存中
7)最后dyld調(diào)用真正的main函數(shù)