Weak 原理 个人学习总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值