iOS weak 指针实现原理1

__weak 指针在对象释放后如何被置为 nil 的源码解析,从 `objc_object::rootDealloc()` 到 `clearDeallocating_slow()` 的过程。文章探讨了 __strong, __weak 和 __unsafe_unretained 的区别,并预告了对 SideTable 和 weak_table 的后续讲解。" 129043426,8621276,eBPF 进阶:2022年Linux内核新特性概览,"['Linux内核', '运维', '服务器']
摘要由CSDN通过智能技术生成

####__weak 的作用是什么?
image.png

先给出一段代码 分别用 __strong __weak __unsafe_unretained 指向这个Persion 对象时控制台输出内容分别是什么?

__strong 指向该 Person 对象时 最后Person 才被 dealloc 说明 __strong是个强引用指针 Preson 对象在作用域结束后并没有被立即释放掉

2019-02-19 16:27:04.909648+0800 objc-debug[25362:21505212] 111111111111
2019-02-19 16:27:04.910063+0800 objc-debug[25362:21505212] 22222222222-----<Person: 0x100e46a20>
2019-02-19 16:27:04.910085+0800 objc-debug[25362:21505212] Person dealloc

__weak 指向该 Person 对象时 Person 在方法作用域结束时就被释放掉 __weak是一个弱指针 同时打印 p2指针地址 为 null

2019-02-19 16:29:39.860058+0800 objc-debug[26138:21512702] 111111111111
2019-02-19 16:29:39.860354+0800 objc-debug[26138:21512702] Person dealloc
2019-02-19 16:29:39.860384+0800 objc-debug[26138:21512702] 22222222222-----(null)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dzb1060545231

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值