Objective-C使用一种名为tagged pointers的花哨来减少内存使用,并在处理某些小对象类型(如strings, dates, and numbers)时提高速度。基本上,如果对象中的所有数据都适合指针,运行时将其放在那里而不是分配和跟踪堆内存。
Swift有类似的机制吗?
答案 0 :(得分:3)
班级布局
Swift依赖于以下关于Objective-C运行时的假设,因此它们现在是Objective-C ABI的一部分:
- (有关Objective-C标记指针布局的信息......)
以下假设是Swift ABI的一部分:
- Swift类指针永远不会被标记为指针。
据我所知,Swift处理的是Objective-C标记指针
从Objective-C运行时获得(例如NSNumber
,NSDate
),
但是没有为纯Swift类使用标记指针。