UIWebview:WebThread EXC_BAD_ACCESS

时间:2015-04-05 15:20:12

标签: ios objective-c uiwebview

我有一个完全简单的应用:使用http://tv2.dk

显示网络视图

我正在使用故事板,添加了网络视图并在我的控制器上设置了一个属性。为了简单起见,我没有设置代表。

在viewDidLoad中,我使用我要加载的网址调用网页视图

[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://tv2.dk"]]];

每次应用程序启动时,由于Web线程工作程序中的某些错误而导致崩溃,请参阅此转储。

libobjc.A.dylib`objc_msgSend:
0x1954f7bc0:  cmp    x0, #0
0x1954f7bc4:  b.le   0x1954f7c30               ; objc_msgSend + 112
0x1954f7bc8:  ldr    x13, [x0]
0x1954f7bcc:  and    x9, x13, #0x1fffffff8
0x1954f7bd0:  ldp    x10, x11, [x9, #16]
0x1954f7bd4:  and    w12, w1, w11
0x1954f7bd8:  add    x12, x10, x12, lsl #4
0x1954f7bdc:  ldp    x16, x17, [x12]
0x1954f7be0:  cmp    x16, x1
0x1954f7be4:  b.ne   0x1954f7bec               ; objc_msgSend + 44
0x1954f7be8:  br     x17
0x1954f7bec:  cbz    x16, 0x1954f7d80          ; _objc_msgSend_uncached_impcache
0x1954f7bf0:  cmp    x12, x10
0x1954f7bf4:  b.eq   0x1954f7c00               ; objc_msgSend + 64
0x1954f7bf8:  ldp    x16, x17, [x12, #-16]!
0x1954f7bfc:  b      0x1954f7be0               ; objc_msgSend + 32
0x1954f7c00:  add    x12, x12, w11, uxtw #4
0x1954f7c04:  ldp    x16, x17, [x12]
0x1954f7c08:  cmp    x16, x1
0x1954f7c0c:  b.ne   0x1954f7c14               ; objc_msgSend + 84
0x1954f7c10:  br     x17
0x1954f7c14:  cbz    x16, 0x1954f7d80          ; _objc_msgSend_uncached_impcache
0x1954f7c18:  cmp    x12, x10
0x1954f7c1c:  b.eq   0x1954f7c28               ; objc_msgSend + 104
0x1954f7c20:  ldp    x16, x17, [x12, #-16]!
0x1954f7c24:  b      0x1954f7c08               ; objc_msgSend + 72
0x1954f7c28:  mov    x2, x9
0x1954f7c2c:  b      0x1954e1e70               ; objc_msgSend_corrupt_cache_error
0x1954f7c30:  b.eq   0x1954f7c48               ; objc_msgSend + 136
0x1954f7c34:  adrp   x10, 18278
0x1954f7c38:  add    x10, x10, #1904
0x1954f7c3c:  lsr    x11, x0, #60
0x1954f7c40:  ldr    x9, [x10, x11, lsl #3]
0x1954f7c44:  b      0x1954f7bd0               ; objc_msgSend + 16
0x1954f7c48:  movz   x1, #0
0x1954f7c4c:  movi   d0, #0000000000000000
0x1954f7c50:  movi   d1, #0000000000000000
0x1954f7c54:  movi   d2, #0000000000000000
0x1954f7c58:  movi   d3, #0000000000000000
0x1954f7c5c:  ret    

违规行

0x1954f7bd0:  ldp    x10, x11, [x9, #16]

点击此处查看完整源代码:https://bitbucket.org/styrken/ios-webview-crash

我已经尝试在多个设备上运行此代码等,但都会崩溃。

2 个答案:

答案 0 :(得分:3)

Thread EXC_BAD_ACCESS说明了一切。 UIWebView喜欢从主线程调用。尝试按如下方式输入代码:

dispatch_async(dispatch_get_main_queue(), ^{
 //send webview a message 
 [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://tv2.dk"]]];
});

答案 1 :(得分:0)

在我的情况下,我犯了一个愚蠢的错误,忘记在加载资源之前将WKWebView添加到视图层次结构中。