2015-01-12 2 views
0

가끔 Appstore에 앱이 있습니다. 나는 그 버그를 재현 할 수 없었다.iOS 크래시 SIGABRT가 가끔 발생합니다

패브릭에 충돌이 발생했습니다.

Thread : Crashed: com.apple.root.default-qos 
0 libsystem_kernel.dylib   0x0000000197b1b270 __pthread_kill + 8 
1 libsystem_pthread.dylib  0x0000000197bb9228 pthread_kill + 112 
2 libsystem_c.dylib    0x0000000197a92b18 abort + 112 
3 libsystem_malloc.dylib   0x0000000197b563e4 _nano_malloc_check_clear 
4 libsystem_malloc.dylib   0x0000000197b56550 _nano_malloc_check_clear + 364 
5 libsystem_malloc.dylib   0x0000000197b55064 nano_malloc + 44 
6 libsystem_malloc.dylib   0x0000000197b453e4 malloc_zone_malloc + 116 
7 CoreFoundation     0x0000000186cb179c __CFBasicHashRehash + 264 
8 CoreFoundation     0x0000000186cb2f8c __CFBasicHashAddValue + 100 
9 CoreFoundation     0x0000000186b60454 CFDictionarySetValue + 252 
10 ImageIO      0x0000000187e3fab0 initImagePng + 2800 
11 ImageIO      0x0000000187e3e804 makeImagePlus + 1056 
12 ImageIO      0x0000000187e3df30 CGImageSourceCreateImageAtIndex + 184 
13 UIKit       0x000000018b57cd94 _UIImageRefFromData + 296 
14 UIKit       0x000000018b6e156c -[UIImage(UIImagePrivate) _initWithData:preserveScale:cache:] + 112 
15 UIKit       0x000000018b57cc3c +[UIImage imageWithData:] + 60 
16 APP       0x000000010007b4f4 __28+[XTTeamLogo logo:callback:]_block_invoke (XTTeamLogo.m:94) 
17 libdispatch.dylib    0x00000001979d93ac _dispatch_call_block_and_release + 24 
18 libdispatch.dylib    0x00000001979d936c _dispatch_client_callout + 16 
19 libdispatch.dylib    0x00000001979e540c _dispatch_root_queue_drain + 1152 
20 libdispatch.dylib    0x00000001979e675c _dispatch_worker_thread3 + 108 
21 libsystem_pthread.dylib  0x0000000197bb52e4 _pthread_wqthread + 816 

그래서 16 번 코드는 XTTeamLogo에서 줄 번호 94를 확인하는 힌트를 제공하는 코드 중 하나입니다. 이 코드를 포함하는 :

__block XTTeamLogo *logo; 
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
dispatch_async(queue, ^(void) { 

     ...SERVER REQUEST...   

     if (!localizedError) { 
       NSData *binary = [[[result getMessageByPath:@"DocumentData"] getPropertyByPath:@"Data"] binary]; 
       if (binary) { 
       ->(94) logo = [[XTTeamLogo alloc] initWithImage:[UIImage imageWithData:binary] fromCache:NO]; 
        [[XTDisk sharedInstance] write:logo fileName:kPersistents]; 
        [[XTCache sharedInstance] setObject:logo forKey:kPersistents]; 
       } 
     } 

     ... ERROR HANDLING ETC... 

    dispatch_async(dispatch_get_main_queue(), ^(void){ 
     callback(logo, localizedError); 
    }); 
}); 
+0

로드하려는 이미지의 크기는 얼마입니까? – Shai

+0

서버 크기가 100x100으로 조정됩니다. – Haagenti

답변

0

나는 당신의 의견에서 가정을 binary가 서버에서로드되었다 "그것은 ... 서버 측의 크기를 조정할 것입니다."

변수 binary이 실제 이진 이미지 데이터가 아니고 String (즉, 호텔 네트워크 로그인 페이지 또는 다른 네트워크 foobar에서 수신) 인 경우 어떻게됩니까?

그냥 그것이이, 당신은 당신이 당신의 이미지 데이터를받은 것으로 가정하기 전에 네트워크 응답의 MIME 타입을 확인해야하는 경우 XTTeamLogo이 그것을

NSString* testString = @"dummy test string data. maybe it must be longer"; 
NSData* binary = [testString dataUsingEncoding:NSUTF8StringEncoding]; 

을 처리 할 수 ​​있는지 확인하려고합니다.

관련 문제