OC底层源码串联手稿:从对象到类到应用启动到类布局全流程

工作中遇到复杂度高的项目系统,我惯于花时间梳理出大手稿,作为参考,根据这个思路,我花时间对于OC底层的机制进行梳理,产出大手稿若干。

跟工作中遇到的种种困难比起来,看源码真是一件So Easy的事情啊。

1. iOS 类相关的结构体

     别动,你包里是啥?

Update1:最近有空了,写了另一篇文章,Kitchen Tools That Cook Loves,可以看看那篇里面对于 arrayListTT和EntsizeTT的解释。

Update2:更新了rwe。

OC底层大手稿1_iOS类结构关系图@40.png

2. NSObject alloc init 发生了什么???

      额....唠嗑吗?...
OC底层大手稿2_实例化源码流程@40.png

3. dealloc 是干嘛的?

      切,创建对象我不会,滴饿唠嗑,还不简单吗?
OC底层大手稿3_对象Dealloc@40.png

4. msgSend

      对不起,您现在变成一个Invocation了。啊?为啥你自己心里没数吗?
OC底层大手稿4_msgSend@40.png

5. dyld_start

      人生若只如 dyld_start......
OC底层大手稿5__dyld_start@40.png

6. classLoader

——从头开始吧,我说。
从哪个头?dyld?OCInit?main?
——哦,*、
OC?好吧,献丑了!

NFY: load_images 没有写玩,空缺了一块,其实这块逻辑很简单,就是通过 masSend(可能是) 调用了 load() 方法。

OC底层大手稿6_ClassLoad@40.png

21. GCD Create Queue

      Oh ~! My queue!!!
iOS机制手稿1_GCD_Create@40.png

22. GCD sync async ...

      组员:组长!我看懂了!你上个写队列,这个写函数,那你下个写的肯定是Block任务!
      组长:行,任务我不写了。
iOS机制手稿2_GCD同步异步函数@40.png

23. synchronized

你要是想分手,就果断一点!身为一个前端,Clang,你真是个栅栏。。。
iOS机制手稿3_synchronized锁@40.png

24. GCD Group

组长,为啥每次大领导来视察,你就让我像这样,给你打电话?你去哪儿了?
iOS机制手稿4_GCDGroup@40.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容