IOS學習 對NSString加深瞭解

https://www.jianshu.com/p/df630e78df32其中包含了對NSTaggedPointerString的詳細理解

    NSString * testStr = @"asdasssdaaaaaa"; // 看完上面的文章後,這個字符串的長度會影響系統是否使用TaggedPointer

    NSString * testStr1 = [NSString stringWithFormat:testStr,nil];

    NSString * testStr2 = [NSString stringWithFormat:testStr,nil];

如果testStr的長度超出了TaggedPointer的適用範圍,那麼系統對testStr1只能用_NSCFString類型來存儲。

TaggedPointer範圍內會生成NSTaggedPointerString類型來存儲testStr1,並且testStr1和testStr2內容爲同地址。

例子:TaggedPointer範圍內

print testStr

(__NSCFConstantString *) $3 = 0x000000010617a1a8 @"aaaaaa"

print testStr1

(NSTaggedPointerString *) $2 = 0xf9ab825d8dc97ca5 @"aaaaaa"

print testStr2

(NSTaggedPointerString *) $0 = 0xf9ab825d8dc97ca5 @"aaaaaa"

 

TaggedPointer範圍外

print testStr

(__NSCFConstantString *) $0 = 0x00000001016421a8 @"asdasssdaaaaaa"

print testStr1

(__NSCFString *) $1 = 0x0000000282074100 @"asdasssdaaaaaa"

print testStr2

(__NSCFString *) $2 = 0x0000000282049960 @"asdasssdaaaaaa"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章