iOS开发之NSDictionary中Key值出现NSTaggedPointerString*类型

服务器发来的json数据,直接解析成NSDictionary类型
id object = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

部分key变成了NSTaggedPointerString类型,这样通过已知的key就无法取到值,如[d objectForKey:@"sale_day"]就取不到值

解决方式:

1.将NSString 的属性声明为copy就解决了,或者将Optimization Level改为None[-O0] 
2.用[notification.userInfo[@"ConversationChatter"] mutableCopy] ,拷贝一下地址,这样就可以拿到了 
猜测原因:
这个 iOS升级为64位系统后,指针也是64位,苹果为了速度和节省内存,整出来的taggedpointer
如果整数值能用 60位表示,就生成NSTaggedPointerNumber 的类,
如果ascii字符串 小于等于9位 就生成NSTaggedPointerString 的类,
这个对开发者使用和NSString NSNumber 没什么区别,还能提升性能,只不要直接访问类的 isa指针就好了。
另外这个问题 应该和 NSTaggedPointerString 没多大关系,不信大家试试,创建9位以下字符串,看看是不是这个 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容