Aşağıdaki json üzerinde NSJSONSerialization yürütme, bazen NSCFString * ve bazen NSTaggedPointerString * dize değerleri verir. Bunun neden böyle olduğunu ve NSJSONSerialization'ın hangi tür döndürdüğünü belirlemek için ne yaptığını bilen var mı?NSJSONSerialization üreten NSCFString * ve NSTaggedPointerString *
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"
}
]
}
}
}
}
"GİRİŞ" * Bir NSTaggedPointerString olarak geri gelir. "SALES_REPORT_VIEW" geri geliyor bir NSCFString *. Bu, değerleri kullanıp döküm yaptığım yerde bir etki yapıyor.
GÜNCELLEME
İşteöğrendiğim budur ...
"tüm değer herhangi bir veri tahsis etmeden pointer kendisinde tutulabilir zaman NSTaggedPointerString sonuçlanır." Veri kullanıldıkça burada detaylı bir açıklaması var
... NSTaggedPointerString yana
https://www.mikeash.com/pyblog/friday-qa-2015-07-31-tagged-pointer-strings.html
tırnak gösteren NSString bir alt sınıfıdır/değil gösteren tırnak benim için bir sorun olmamıştı gerekir.
Yorum yapan herkese teşekkürler. Rahatım, NSJSONSerialization'un ne yaptığını anlıyorum.
itibariyle sınıf kümelerin listesini dampingli meraklı iseniz? Her zaman bir NSString * alırsınız. NSString * 'in hangi alt kategorisi sizin için önemli değil. NSTaggedPointerString için Google – gnasher729
. Eğer bu sizin için bir fark yaratıyorsa, o zaman çok yanlış bir şey yapıyorsunuz demektir. Etiketli işaretçiler, tüm değerlerin herhangi bir veri tahsis edilmeden işaretçinin kendisinde saklanabileceği küçük değerler için 64 bit sistemlerde çok yaygındır. – gnasher729
Bunun bir örneği, UI'de (bir UITextField'e yazıldığında) gösterildiği zaman, NSTaggedPointerString * öğesinin etrafında tırnak işareti yoktur, bu sırada NSString * etrafında tırnak işaretleri bulunur. –