에 내가 여기에 최소한의 코드로 전체 didFinishLaunchingWithOptions
을 넣어 : 결과iOS 앱 시간 0x000000008badf00d에서 시작 실패 - 지연을 applicationDidBecomeActive
[UIApplication sharedApplication].idleTimerDisabled = YES;
m_bDataLoadingNeeded = YES;
return YES;
, 나는 applicationDidBecomeActive
에서 중요한 초기화를 넣어했다. 그러나 위의 오류가 발생합니다.
모든 참조 나는 그것에 대해 얻은 didFinishLaunchingWithOptions
을 완료하는 것을 언급한다. applicationDidBecomeActive
에 대한 수표가 필요합니까?
내 충돌 로그는 여기에 (어떻게 든, 나는이 곳에서 dsym 및 응용 프로그램과 함께 그것을 symbolicate 수 없습니다, 그래서 정확한 원인 인 문 알 수 없다. 그러나 모든 사람이 확실히하지 didFinishLaunchingWithOptions
것을 볼 수 있습니다)
나는 백그라운드 스레드 안에 내 applicationDidBecomeActive
초기화를 이동할 수 있습니다 applicationDidBecomeActive
을 고려
Exception Type: 00000020
Exception Codes: 0x000000008badf00d
Highlighted Thread: 0
Application Specific Information:
<MyBundleID> failed to launch in time
Elapsed total CPU time (seconds): 1.600 (user 1.600, system 0.000), 4% CPU
Elapsed application CPU time (seconds): 0.438, 1% CPU
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0:
0 libsystem_kernel.dylib 0x3c66f0fc 0x3c65e000 + 69884
1 libsystem_c.dylib 0x3c5b8124 0x3c5b7000 + 4388
2 SystemConfiguration 0x360d43ca 0x360c0000 + 82890
3 MyApp 0x001cd406 0xf9000 + 869382
4 MyApp 0x001ccb78 0xf9000 + 867192
5 MyApp 0x001cd148 0xf9000 + 868680
6 MyApp 0x001d77e4 0xf9000 + 911332
7 MyApp 0x001d7ed0 0xf9000 + 913104
8 MyApp 0x001cd908 0xf9000 + 870664
9 MyApp 0x001d46e0 0xf9000 + 898784
10 MyApp 0x000fb870 0xf9000 + 10352
11 UIKit 0x36177af6 0x36102000 + 482038
12 UIKit 0x3615d9bc 0x36102000 + 375228
13 UIKit 0x36105c34 0x36102000 + 15412
14 UIKit 0x361056c8 0x36102000 + 14024
15 UIKit 0x36105116 0x36102000 + 12566
16 GraphicsServices 0x37dfb5a0 0x37df5000 + 26016
17 GraphicsServices 0x37dfb1ce 0x37df5000 + 25038
18 CoreFoundation 0x342d2170 0x3423b000 + 618864
19 CoreFoundation 0x342d2112 0x3423b000 + 618770
20 CoreFoundation 0x342d0f94 0x3423b000 + 614292
21 CoreFoundation 0x34243eb8 0x3423b000 + 36536
22 CoreFoundation 0x34243d44 0x3423b000 + 36164
23 UIKit 0x3615c480 0x36102000 + 369792
24 UIKit 0x361592fc 0x36102000 + 357116
25 MyApp 0x000fb4be 0xf9000 + 9406
26 MyApp 0x000fb474 0xf9000 + 9332
은 참으로 범인입니다 이 초기화 코드는 내부적으로 더 많은 스레드를 생성합니다. AFNetworking, Reachability 및 블록 기반의 다른 프레임 워크를 사용하고 있습니다. 이미 구축 된 아키텍처와 공통 코드에 많은 수정을 가할 수 있는지 궁금합니다.
나는 이걸 가능한 한 최단의 방법으로 다루는 방법을 꽤 혼란 스럽다.
'0x8badf00d' ... 전형적으로, 시작하는 동안 왜 메인 스레드를 차단합니까? 계속 진행하는 데 너무 오래 걸리는 작업은 백그라운드 스레드에 넣어야합니다. – holex
악기를 사용하여 주 스레드를 차단하고 코드를 최적화하는 코드 부분을 찾습니다. 당신이 모르는 것을 최적화하지 마십시오. – Kerni
글쎄, 실제로 백그라운드 스레드 내에 있지만 AFNetworking 호출 등 볼 수있는 방식으로 내 혼란이 한 번만 더 배경 호출 내에서 전체 내용을 래핑 할 것입니다? 또한, applicationDidBecomeActive에 대한주의를 전혀 보지 못했습니다. 실제로 첫 번째 viewdidLoad 후에 실제로 호출되는 것을 보았습니다. –