前段时间, 公司App需要js 交互处理一些Sina支付的问题(资金管理Sina支付要全盘接手), 初次搞Objective-C 与js交互, 多亏天狐大神的博客 (天狐博客一生烟雨一场梦,一世红尘一阙歌), 帮我这个菜鸟解决了问题, 感恩ing~
接下来说说我的问题:
js关联:
self.context=[self.sinaWebview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//以JSExport协议关联native的方法
self.context[@"longkinAPIFunction"] =self;
调用的Objective-C方法:
- (void)sinaClickBack:(NSInteger)optype order:(NSString*)order {
[self.navigationController popViewControllerAnimated:YES];
}
然而这样做在iOS10上会crash, iOS10以下虽然没有crash, 但是控制台会出现一堆错误信息.
解决办法:
在主线程中执行Objective-C代码:
- (void)sinaClickBack:(NSInteger)optype order:(NSString*)order {
__weaktypeof(self) weakSelf =self;
dispatch_async(dispatch_get_main_queue(), ^{
[weakSelf.navigationController popViewControllerAnimated:YES];
});
}
具体原因目前还没理解, 但是能解决问题... 管它呢😁 , 后续再慢慢琢磨.