Сбой CFNetwork с использованием Swift в iOS
В моем приложении произошел следующий сбой, но я не могу воспроизвести его, чтобы найти его источник. Основная работа - это несколько асинхронных сетевых запросов на загрузку, которые помещаются в параллельный OperationQueue и также поддерживают фоновый переход.
Сбой: NSOperationQueue 0x174037ae0:: NSOperation 0x17044f7b0 (QOS: DEFAULT) EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000ce6fabec8
Сбой: NSOperationQueue 0x170036660:: NSOperation 0x17425e360 (QOS: DEFAULT)
0 libobjc.A.dylib 0x181c21704 objc_object::release() + 8
1 CFNetwork 0x1839a196c __destroy_helper_block_.465 + 40
2 libsystem_blocks.dylib 0x1820afa28 _Block_release + 144
3 Foundation 0x183c0623c -[NSBlockOperation dealloc] + 64
4 Foundation 0x183cc245c __NSOQSchedule_f + 484
5 libdispatch.dylib 0x18205a1bc _dispatch_client_callout + 16
6 libdispatch.dylib 0x1820683dc _dispatch_queue_serial_drain + 928
7 libdispatch.dylib 0x18205d9a4 _dispatch_queue_invoke + 652
8 libdispatch.dylib 0x18206a34c _dispatch_root_queue_drain + 572
9 libdispatch.dylib 0x18206a0ac _dispatch_worker_thread3 + 124
10 libsystem_pthread.dylib 0x1822632a0 _pthread_wqthread + 1288
11 libsystem_pthread.dylib 0x182262d8c start_wqthread + 4
Приложение написано в Swift 3. Есть что-нибудь, что вы можете предложить?
1 ответ
Я только что решил этот же журнал сбоев, обновив стороннюю библиотеку. Проблема в этой библиотеке определяла объект блока как (сильный, неатомный) вместо (копия). Это была библиотека Objective-C, но те же сильные / слабые принципы применимы к свойствам блочного объекта Swift. Если эти блоки были добавлены в NSOperationQueue, вы можете увидеть эту ошибку. Есть ли у вас сильные свойства блоков или какие-либо сильные ссылки в NSOperationQueues?