type
status
date
slug
summary
tags
category
icon
password
Swift4之前

Swift4之后


该对象最初是没有
Side Table
的,在以下情况下会自动创建:- 对象由弱引用指向时
strong
或unowned
计数器溢出(在32位系统上,嵌入式计数器很小)。
地址更改逻辑:
结论:
- 初始化(init):在第 1、2 位的 bit 上置为 1,相当于初始化完
0x3
- 无主引用(
unowned
):每次使用,在第 2 位的 bit 位上加 1,相当于每次加0x2
- 强引用(
strong
):每次使用,在第 33 位的 bit 位上加 1,相当于每次加0x200000000
- 弱引用(
weak
):每次使用,会生成一张SideTable
,然后把SideTable
的地址右移 3 位,将 63、64 位的 bit 置为 1,最后存入引用计数,因为最高位的两个都是 1,所以显示成 16 进制的时候,最高位大概率位c
。
- 作者:NotionNext
- 链接:https://tangly1024.com/article/Swift%20%E5%BC%B1%E5%BC%95%E7%94%A8%E7%AE%A1%E7%90%86%E4%B9%8B%20Side%20Table
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章