weak简单来说是一个哈希表,key为修饰对象的地址,value为指向该地址的指针数组。
Weak是由runtime初始化并维护的一个weak表。
在runtime的源码中由一个objc_weak文件中进行定义了weak表的结构体及相关的方法。
其中结构体中定义可一个table_weak_t的一个weak的全局引用表,使用被修饰的对象的地址作为key,使用指向该地址的指针对象的数组作为key。
Weak为什么会是弱引用?
Weak修饰的对象不会增加该对象的引用计数,在被修饰对象被释放时会自动将指针置为nil,使其不会出现内存泄漏等问题。
Weak自动置为nil的原理!
首先根据对象的地址获取所有weak指针的地址的数组,遍历数组将其中的数据设为nil。将weak表中该记录删除
Weak 原理 个人学习总结
最新推荐文章于 2024-08-13 10:47:05 发布