2017-02-14 184 views
0

最近我的應用程序在修改NSData到ios10上的NSString時出現了一些崩潰報告,附件映像是崩潰堆棧。崩潰是由fabric收集的,我無法再現它。
其他人是否遇到同樣的問題,請告訴我如何避免該問題?
我已經檢查了nsdata並確保它不是零。爲什麼NSData轉換爲NSString在ios10上崩潰

[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] 

#0. Crashed: com.apple.main-thread 
0 libsystem_kernel.dylib   0x18b7f3014 __pthread_kill + 8 
1 libsystem_pthread.dylib  0x18b8bb450 pthread_kill + 112 
2 libsystem_c.dylib    0x18b767400 abort + 140 
3 libsystem_malloc.dylib   0x18b837a5c _nano_vet_and_size_of_live + 330 
4 libsystem_malloc.dylib   0x18b839028 nano_realloc + 648 
5 libsystem_malloc.dylib   0x18b82b240 malloc_zone_realloc + 180 
6 CoreFoundation     0x18c7e3958 __CFStringCreateImmutableFunnel3 + 692 
7 CoreFoundation     0x18c76d81c CFStringCreateFromExternalRepresentation + 104 
8 Foundation      0x18d253f64 -[NSPlaceholderString initWithData:encoding:] + 148 
NSData

here is the crash detail screenshot

+0

大概是因爲NSData的是NULL – Ludovic

+0

檢查NSData的是零? –

+2

發佈您的代碼。 – GeneCode

回答

2

檢查你的數據不是零和NOT NULL

if (data && ![data isKindOfClass:[NSNull class]]) { 
    NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] 
} 
+0

我只檢查不是nil.I將在下一個版本中添加檢查不爲NULL,並將繼續跟蹤問題。如果數據爲NULL,則會遇到 – afei

+0

,它會以不同的崩潰堆棧崩潰,所以它不應該是原因 – afei

0

檢查條件不爲零,data.length > 0意味着它包含了一些價值。

if(data.length > 0){ 
    NSString *tempString =[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
    //Do your tasks here 
}