iOS 内存管理之Tagged pointer

2020-08-17  本文已影响0人  大白菜s

从64位开始,iOS引入了TaggedPointer技术,用于优化NSNumber、NSDate、NSString等小对象的存储

1.将值直接存储到变量指针中,不必开辟堆空间。
2.实例对象方法取值也会调用objc_msgSend,在方法中判断,如果是Tagged Pointer对象直接取值,如果不是根据isa取值

iOS系统 TaggedPointer对象地址最高位为1
TaggedPointer对象地址 & mask 0x1000 0000 0000 0000 取值等于0x1000 0000 0000 0000
Mac系统 TaggedPointer对象地址最低位为1
TaggedPointer对象地址 & mask 0x0000 0000 0000 0001 取值等于0x0000 0000 0000 0001

上一篇下一篇

猜你喜欢

热点阅读