2017-02-14 181 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 
}