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"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值