2017-02-01 4 views
1

У меня есть следующий сбой в моем приложении, но я не могу воспроизвести его, чтобы найти его источник. Основная работа - множественная асинхронная сеть загрузить запросы, которые размещаются в одновременно OperationQueue и поддержка background переход тоже.Сбой CFNetwork с использованием быстрого в iOS

Разбился: NSOperationQueue 0x174037ae0 :: NSOperation 0x17044f7b0 (QOS: DEFAULT) EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000ce6fabec8

Разбился: NSOperationQueue 0x170036660 :: NSOperation 0x17425e360 (QOS УМОЛЧАНИЮ)

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. Есть ли что-нибудь, что вы можете предложить?

+0

Можете ли вы показать нам линии кодирования, в которых вы получаете этот крах? –

+0

В режиме отладки я не могу получить этот сбой, потому что не могу воспроизвести его. Я получаю этот отчет от Fabric (который не включает строки кодирования для сбоя), и я надеялся получить некоторую помощь, чтобы начать смотреть на определенное место. – nick3389

ответ

1

Я только что разрешил этот же самый журнал сбоев, обновив стороннюю библиотеку. Проблема в этой библиотеке определяла блок-объект как (сильный, неатомический) вместо (copy). Это была библиотека Objective-C, но те же самые сильные/слабые принципы применимы к свойствам объекта блокировки Swift. Если эти блоки были добавлены в NSOperationQueue, вы могли бы увидеть эту ошибку. У вас есть какие-либо сильные свойства блока или какие-либо сильные ссылки в NSOperationQueues?

+0

У меня есть сильные ссылки (не блоки) в Операции, но я уверен, что я не получаю к ним доступ после того, как я отменил или закончу операцию. Моя проблема в том, что у парня, который ранее был реализован, было 2 делегата для одной и той же операции. Когда он создал URLSession, он установил себя как делегат (сама операция), и если сеанс был продолжен в фоновом режиме, он добавил завершениеHandler handleEventsForBackgroundURLSession другому пользовательскому делегату. Поэтому, возможно, оба делегата иногда бегут вместе, и возникает конфликт. Теперь я сделал это с 1 пользовательским делегатом, и я жду ... – nick3389