FMDB
sqlite 데이터베이스와 상호 작용 하는 데 사용하는 앱 스토어에있는 앱에서 작업 중입니다 . 다음과 같은 스택 추적이 포함 된 오류 보고서를 받았습니다.
Thread : Crashed: NSOperationQueue 0x170239c20 :: NSOperation 0x17024d7d0 (QOS: LEGACY)
0 libobjc.A.dylib 0x000000019701c0b4 objc_retain + 20
1 MyApp 0x00000001002bdff4 FMDBBlockSQLiteCallBackFunction
2 MyApp 0x00000001002bdb1c FMDBBlockSQLiteCallBackFunction
3 MyApp 0x00000001002b66b4 FMDBBlockSQLiteCallBackFunction
4 MyApp 0x00000001002980fc FMDBBlockSQLiteCallBackFunction
5 MyApp 0x000000010029f20c FMDBBlockSQLiteCallBackFunction
6 CFNetwork 0x00000001851475a4 __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke + 300
7 Foundation 0x00000001866bf1c4 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 16
8 Foundation 0x0000000186610604 -[NSBlockOperation main] + 96
9 Foundation 0x00000001866001cc -[__NSOperationInternal _start:] + 636
10 Foundation 0x00000001866c1f28 __NSOQSchedule_f + 228
11 libdispatch.dylib 0x0000000197655954 _dispatch_client_callout + 16
12 libdispatch.dylib 0x00000001976600a4 _dispatch_queue_drain + 1448
13 libdispatch.dylib 0x0000000197658a5c _dispatch_queue_invoke + 132
14 libdispatch.dylib 0x0000000197662318 _dispatch_root_queue_drain + 720
15 libdispatch.dylib 0x0000000197663c4c _dispatch_worker_thread3 + 108
16 libsystem_pthread.dylib 0x000000019783522c _pthread_wqthread + 816
그러나 FMDB
코드 를 읽어 보면 우리가 전혀 사용하지 않는 의 메서드를 사용하여 생성 된 함수에 FMDBBlockSQLiteCallBackFunction
대한 콜백으로 만 호출됩니다 .SQLite
FMDatabase
makeFunctionNamed:maximumArguments:withBlock:
이와 같은 충돌을 일으킬 수있는 아이디어가 있습니까?
답변
didFinish
당신처럼 보이게은이 라인에 경쟁 조건이있을 수 있습니다 :
6 CFNetwork 0x00000001851475a4 __49-[__NSCFLocalSessionTask _task_onqueue_didFinish]_block_invoke + 300
느린 하드웨어를 에뮬레이션하여 최종 사용자의 상태를 재현 해보십시오.