有些方法默认是在子线程的。需要我们手动回到主线程更新/跳转页面。
1.UIWebView原生与h5交互的方法 - (void)webView:(UIWebView *)webView didCreateJavaScriptContext:(JSContext *)jsContext
正确代码写法
//声名
@property (nonatomic,strong) JSContext *jsContext;
#pragma mark TSWebViewDelegate
- (void)webView:(UIWebView *)webView didCreateJavaScriptContext:(JSContext *)jsContext
{
self.jsContext = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
self.jsContext.exceptionHandler = ^(JSContext *context, JSValue *exceptionValue){
context.exception = exceptionValue;
NSLog(@"didCreateJavaScriptContext异常信息:%@", exceptionValue);
};
self.jsContext[@"nativeFun"] = ^(NSString* str) {
//这里默认子线程 需要回到主线程
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
//要做的
}];
};
}
2.各种权限申请回调的block
3.有些只能在主线程写的代码
(1) -[UIImageView initWithImage:] must be used from main thread only
(2) webView loadRequest:
未完待续