CFNetwork 在 iOS 中使用 swift 崩溃



我的应用程序中有以下崩溃,但我无法重现它以找到其源代码。主要工作是多个异步网络上传请求,这些请求放置在并发操作队列中,也支持后台转换。

崩溃: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 编写的。有什么可以提出的吗?

我刚刚通过更新第三方库解决了这个完全相同的崩溃日志。该库中的问题是将块对象定义为(强,非原子)而不是(副本)。它是一个 Objective-C 库,但同样的强/弱原则也适用于 Swift 块对象属性。如果将这些块添加到 NSOperationQueue,则可以看到该错误。NSOperationQueues 中是否有任何强块属性或任何强引用?

最新更新