前段時間, 公司App需要js 交互處理一些Sina支付的問題(資金管理Sina支付要全盤接手), 初次搞Objective-C 與js交互, 多虧天狐大神的博客 (天狐博客一生煙雨一場夢,一世紅塵一闕歌), 幫我這個菜鳥解決了問題, 感恩ing~
接下來說說我的問題:
js關聯(lián):
self.context=[self.sinaWebview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//以JSExport協(xié)議關聯(lián)native的方法
self.context[@"longkinAPIFunction"] =self;
調用的Objective-C方法:
- (void)sinaClickBack:(NSInteger)optype order:(NSString*)order {
[self.navigationController popViewControllerAnimated:YES];
}
然而這樣做在iOS10上會crash, iOS10以下雖然沒有crash, 但是控制臺會出現(xiàn)一堆錯誤信息.
解決辦法:
在主線程中執(zhí)行Objective-C代碼:
- (void)sinaClickBack:(NSInteger)optype order:(NSString*)order {
__weaktypeof(self) weakSelf =self;
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf.navigationController popViewControllerAnimated:YES];
});
}
具體原因目前還沒理解, 但是能解決問題... 管它呢?? , 后續(xù)再慢慢琢磨.