美文网首页
iOS开发之NSDictionary中Key值出现NSTagge

iOS开发之NSDictionary中Key值出现NSTagge

作者: a0b6e2a49203 | 来源:发表于2018-02-06 15:34 被阅读343次

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

 

朱晓晓的技术博客 关注

2017.09.18 11:46* 字数 62 阅读 57评论 0喜欢 0

服务器发来的json数据,直接解析成NSDictionary类型

idobject = [NSJSONSerializationJSONObjectWithData:data options:NSJSONReadingMutableContainerserror: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的类,这个对开发者使用和NSStringNSNumber没什么区别,还能提升性能,只不要直接访问类的 isa指针就好了。另外这个问题 应该和NSTaggedPointerString没多大关系,不信大家试试,创建9位以下字符串,看看是不是这个

相关文章

网友评论

      本文标题:iOS开发之NSDictionary中Key值出现NSTagge

      本文链接:https://www.haomeiwen.com/subject/jnmgzxtx.html