iOS 內(nèi)存管理之Tagged pointer

從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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。