ios - Xcode 6 Swift WebThread 崩溃并出现 EXC_BAD_ACCESS 错误

标签 ios xcode swift uiwebview exc-bad-access

我使用 Xcode 6 和 Swift 在 iOS 应用程序中通过 UIWebView 显示 PDF 文件,如下所示:

@IBOutlet weak var displayWebView: UIWebView!

func displayView(viewfile: NSData){
    displayWebView.loadData(viewfile, MIMEType: "application/pdf", textEncodingName: "UTF-8", baseURL: nil)
}

View 文件是一个 NSData,来自上一个屏幕中的 segue,它是一个 TableView 。

PDF显示正常。但是,当应用程序往返于上一个屏幕时,应用程序会在“loadData”步骤中崩溃,并显示“WebThread (xx): EXC_BAD_ACCESS (code=EXC_I386_GPFLT)”消息,如下所示:

libobjc.A.dylib`objc_msgSend:
    0x106da3000 <+0>:   testq  %rdi, %rdi
    0x106da3003 <+3>:   jle    0x106da3068               ; <+104>
    0x106da3005 <+5>:   movq   (%rdi), %r11
    0x106da3008 <+8>:   movq   %rsi, %r10
->  0x106da300b <+11>:  andl   0x18(%r11), %r10d    WebThread (24): EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    0x106da300f <+15>:  shlq   $0x4, %r10
    0x106da3013 <+19>:  addq   0x10(%r11), %r10
    0x106da3017 <+23>:  cmpq   (%r10), %rsi

有时,错误是:

WebKitLegacy`-[WebDataSource(WebPrivate) dataSourceDelegate]:
    0x10c51dbb0 <+0>:  pushq  %rbp
    0x10c51dbb1 <+1>:  movq   %rsp, %rbp
    0x10c51dbb4 <+4>:  movq   0x11ad95(%rip), %rax      ; WebDataSource._private
    0x10c51dbbb <+11>: movq   (%rdi,%rax), %rax
->  0x10c51dbbf <+15>: movq   0x18(%rax), %rax     WebThread (17): EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    0x10c51dbc3 <+19>: popq   %rbp
    0x10c51dbc4 <+20>: retq   
    0x10c51dbc5 <+21>: nopw   %cs:(%rax,%rax)

无论是 iOS 8 还是 iOS 7,这些崩溃都会发生,而且崩溃的位置看起来是随机的。虽然有类似的帖子描述类似的症状,但它们是 Objective-C 解决方案而不是 Swift。

有人可以告知 Swift 中问题的解决方案吗?

最佳答案

为什么在调用“loadData”后不更新 View ? block 内的执行相对于其线程仍然是同步的。

[查询 findObjectsInBackgroundWithBlock:^(NSArray * _Nullable 对象,NSError * _Nullable 错误) { 如果(错误){ //处理错误 } 别的 { dispatch_async(dispatch_get_main_queue(), ^{ [自加载数据]; [ self 更新 View ]; }); } }];

关于ios - Xcode 6 Swift WebThread 崩溃并出现 EXC_BAD_ACCESS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32414581/

相关文章:

ios - CollectionViewCell 中的标签未显示

swift - Xcode 没有这样的模块 : 'PackageDescription'

ios - 运行命令时遇到内部错误 : Error: Unable to launch WebDriverAgent because of xcodebuild failure: "xcodebuild failed with code 70"

iphone - 从 Plist 中读取信息以在 TableView 中使用

ios - 如何获得核心数据的不同值与关系值?

iphone - Xcode:iPhone 5 App Launch 图像未更新

iphone - 将 C 库编译为 iPhone 框架?

ios - Xcode 6 Storyboard Unwind Segue with Swift 不连接退出

ios - 离开 View 时停止异步 block 请求(AFNetworking;iOS)

swift - 测试模块时重置单例状态