OC--看objc源码认识weak

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC--看objc源码认识weak相关的知识,希望对你有一定的参考价值。

参考技术A 主要参考:
weak 弱引用的实现方式
详解获取weak对象的过程
解析:SideTables, SideTable, weak_table, weak_entry_t

weak修饰有什么用?

1、设置方法:storeWeak
2、读取方法:objc_loadWeakRetained(ARC)、objc_loadWeak(MRC)

从全局的哈希表SideTables中,利用对象本身地址进行位运算后得到对应下标,取得该对象的弱引用表。SideTables是一个 64 个元素长度的散列表,发生碰撞时,可能一个SideTable中存在多个对象共享一个弱引用表。

上面三层结构下来,referent就是对象地址,referrers是这个对象所有weak变量的地址,

以上是关于OC--看objc源码认识weak的主要内容,如果未能解决你的问题,请参考以下文章

Runtime objc4-779.1 通过runtime源码对OC对象初始化过程解析

[OC学习笔记]启动流程(objc部分)

[OC学习笔记]启动流程(objc部分)

[OC学习笔记]class类结构cache_t

OC源码探索02:alloc、init和new的区别

元类(meta class)