ios - CFNetwork 在 iOS 中使用 swift 崩溃

标签 ios swift exc-bad-access nsoperationqueue cfnetwork

我的应用程序出现以下崩溃,但我无法重现它以找到其来源。主要工作是多个异步网络上传请求,放在一个并发OperationQueue中,也支持后台转换。

崩溃:NSOperationQueue 0x174037ae0::NSOperation 0x17044f7b0(QOS:默认) 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 编写的。您有什么建议吗?

最佳答案

我刚刚通过更新第 3 方库解决了这个完全相同的崩溃日志。该库中的问题是将 block 对象定义为 (strong, nonatomic) 而不是 (copy)。它是一个 Objective-C 库,但相同的强/弱原则将适用于 Swift block 对象属性。如果将这些 block 添加到 NSOperationQueue,您可能会看到该错误。你在 NSOperationQueues 中有任何强 block 属性或强引用吗?

关于ios - CFNetwork 在 iOS 中使用 swift 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41981506/

相关文章:

objective-c - 如何解决 EXC_BAD_ACCESS (SIGSEGV) 上的 KERN_INVALID_ADDRESS

ios - 设置 NSObject 属性 - EXC_BAD_ACCESS

iphone - Facebook loginViewFetchedUserInfo 被调用两次

android - 如何从 PlayN 调用 native (Android) 函数?

ios - 通过单击按钮显示或隐藏项目

c - EXC_BAD_ACCESS(代码=1,地址=0x0)

当 native 闹钟响起时发送推送通知的 iOS 应用程序

iphone - iOS 7 警告中不推荐使用 transactionreceipt 的问题

swift - 尝试以编程方式使用 Assets 中图像的未解析标识符

ios - 删除 UITableViewCell 时出现 NSException