從64位開始,iOS引入了TaggedPointer技術(shù)栓票,用于優(yōu)化NSNumber决左、NSDate、NSString等小對象的存儲
1.將值直接存儲到變量指針中走贪,不必開辟堆空間佛猛。
2.實例對象方法取值也會調(diào)用objc_msgSend,在方法中判斷坠狡,如果是Tagged Pointer對象直接取值继找,如果不是根據(jù)isa取值
iOS系統(tǒng) TaggedPointer對象地址最高位為1
TaggedPointer對象地址 & mask 0x1000 0000 0000 0000 取值等于0x1000 0000 0000 0000
Mac系統(tǒng) TaggedPointer對象地址最低位為1
TaggedPointer對象地址 & mask 0x0000 0000 0000 0001 取值等于0x0000 0000 0000 0001