type
status
date
slug
summary
tags
category
icon
password
Swift4之前
notion image
Swift4之后
notion image
notion image
该对象最初是没有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
当你点击了屏幕发生了什么(内存篇)KVC