gpt4 book ai didi

objective-c - NSJSONSerialization 生成 NSCFString* 和 NSTaggedPointerString*

转载 作者:太空狗 更新时间:2023-10-30 03:15:10 28 4
gpt4 key购买 nike

在以下 json 上执行 NSJSONSerialization 有时会给我 NSCFString* ,有时会给我 NSTaggedPointerString* 字符串值。有谁知道为什么会这样以及 NSJSONSerialization 使用什么来确定它返回的类型?

jsonData = [NSJSONSerialization JSONObjectWithData:data
options:kNilOptions
error:&parseError];

{
"UserPermissionsService": {
"ServiceHeader": {},
"UserApplicationPermissions": {
"ApplicationPermissions": {
"ApplicationID": "TEST",
"Permission": [
{
"Locations": [
"00000"
],
"PermissionID": "LOGIN"
},
{
"Locations": [
"00000"
],
"PermissionID": "SALES_REPORT_VIEW"
}
]
}
}
}
}

“LOGIN”作为 NSTaggedPointerString* 返回。 “SALES_REPORT_VIEW”返回是一个 NSCFString*。这对我使用和转换值的下游产生了影响。

更新

这是我学到的……

“NSTaggedPointerString 当整个值可以保存在指针本身而不分配任何数据时产生。”

这里有详细的解释...

https://www.mikeash.com/pyblog/friday-qa-2015-07-31-tagged-pointer-strings.html

因为 NSTaggedPointerString 是 NSString 的子类,显示引号/不显示引号对我来说从来都不是问题,因为数据已被使用。

感谢所有发表评论的人。我很自在地理解 NSJSONSerialization 在做什么。

最佳答案

基金会的大部分实现为 class clusters . TL;DR 您将它作为 NSString 与之交互,但基金会将更改支持实现以根据实际内容优化某些性能或空间特征。

如果您好奇,基金会团队中的一个人会转储 iOS 11 的类集群列表 here

关于objective-c - NSJSONSerialization 生成 NSCFString* 和 NSTaggedPointerString*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33105750/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com