废话少说,直接看图说问题
出现原因:
这个 iOS升级为64位系统后,指针也是64位,苹果为了速度和节省内存,整出来的taggedpointer如果整数值能用60位表示,就生成NSTaggedPointerNumber的类,如果ascii字符串 小于等于9位 就生成NSTaggedPointerString的类,这个对开发者使用和NSStringNSNumber没什么区别,还能提升性能,只不要直接访问类的 isa指针就好了。(引用作者说明:朱晓晓的技术博客 关注)
也就是说,当OC中的数据,所占用的内存字节数<9位的时候,系统回对数据做优化处理。
解决方法:
1:将NSString类型的修饰词改为copy形式
2:将解析出来的数据直接深拷贝一份mutableCopy
3:上述方法若不行,直接采取最笨的方式,将NSTaggedPointerString类型的字符串与另外一个字符串拼接,注意一定是与其他字符拼接起来,然后再拆分。
如:假设 a是“NSTaggedPointerString类型”的字符串,a = @"110";
NSString b = [NSString stringWithFormat:@"%@%@",a,@","];
//将其与一个@“逗号”拼接起来,然后拆分