iOS JavaScriptCore与H5交互时出现异常提示
在利用JavaScriptCore与H5交互时出现异常提示:
This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes. This will cause an exception in a future release.
从字面意思看,是因为在后台线程修改了UI,于是乎开始验证
_weak typeof(self)weakSelf = self;
JSContext *tContext = [weakSelf.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
tContext[@"jsredirect"] = ^(){
NSArray *tArgs = [JSContext currentArguments];
JSValue *tJSValue = [tArgs firstObject];
@try
{
NSDictionary *tActionValueDic = [tJSValue toDictionary];
NSLog(@"JSValue:%@", tActionValueDic);
NSString *tUrlStr = tActionValueDic[@"url"];
if ([tUrlStr isEqualToString:@"chartDispose"]) {
[[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitDiskImageCacheEnabled"];
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitOfflineWebApplicationCacheEnabled"];
[[NSUserDefaults standardUserDefaults] synchronize];
}else{
CGGradeJumpWebViewController *vc = [[CGGradeJumpWebViewController alloc]init];
vc.urlStr = tUrlStr;
NSLog(@"Current Thread:%@",[NSThread currentThread]);
dispatch_async(dispatch_get_main_queue(), ^{
//UI修改
NSLog(@"Current Thread:%@",[NSThread currentThread]);
[weakSelf.navigationController pushViewController:vc animated:YES];
});
}
}
@catch (NSException *exception)
{
NSLog(@"exception:%@", exception);
}
};
果然,在XCode7中网页交互实在后台线程中执行的(XCode6木有问题),所以在交互时修改UI要再主线程中执行,问题解决。
iOS JavaScriptCore与H5交互时出现异常提示的更多相关文章
- 启动storm任务时,异常提示
启动storm任务时,异常提示: 14182 [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2000] WARN o.a.s.s.o.a.z.s.NIOServerCnx ...
- iOS 开发与H5交互(JavaScriptCore框架的使用)
现在的iOS项目中嵌入了越来越多的Web界面,当然是为了方便,那么为了迎合这一趋势,作为iOS开发程序员,我们必须要了解怎么样用OC去和这些Web界面进行交互.这里介绍的是JavaScriptCore ...
- ios和安卓H5交互桥接
ios交互 demo1(摘自网络) <!doctype html> <html> <head> <meta charset="UTF-8" ...
- iOS原生与H5交互
一.WKWebView WKWebView 初始化时,有一个参数叫configuration,它是WKWebViewConfiguration类型的参数,而WKWebViewConfiguration ...
- iOS bug 之 H5 页面没有弹出提示框
描述:在安卓上有提示框,但是在iOS上没有提示框. step 1: 失误,是我没有在正确的位置设置网址. step 2: 修改之后,测试页能弹出提示框,但是正式的页面没有提示框. step 3: 我输 ...
- webview和H5交互
由于H5的灵活多变,动态可配的特点,也为了避免冗长 的审核周期,H5页面在app上的重要性正日益突显. iOS应用于H5交互的控件主要是UIWebView及WKWebView WKWebView是14 ...
- iOS与H5交互
H5与App原生交互,一般会是前端页面中的JavaScript与App使用的原生开发语言的交互.技术方案应能达到以下要求: 在js与原生进行交互的时候能保证正常的正向调用逻辑返回,反向可以处理异步回调 ...
- WebViewJavascriptBridge详细使用 iOS与H5交互的方案
WebViewJavascriptBridge详细使用 源网址: https://www.cnblogs.com/jiang-xiao-yan/p/5345755.html 前言 WebView ...
- iOS原生APP和H5交互-delegate和第三方
一.原生代码中直接加载页面(拦截) 1. 具体案例 加载本地/网络HTML5作为功能介绍页 2. 代码示例 //本地 -(void)loadLocalPage:(UIWebView*)we ...
随机推荐
- python之常用内置函数
python内置函数,可以通过python的帮助文档 Build-in Functions,在终端交互下可以通过命令查看 >>> dir("__builtins__&quo ...
- iOS开发的小技巧
转自简书:http://www.jianshu.com/p/50b63a221f09 http://www.jianshu.com/p/08f194e9904c 原作者:叶孤城___ self.ta ...
- Mac下的Maven配置
1.确保电脑已经安装java,并配置JAVA_HOME环境变量 2.从官网下载Maven压缩包并解压,zip或者其他格式的都行 3.进入终端,编辑环境变量配置文件 vi .bash_profile 可 ...
- js添加var和不加var区别
var 声明的变量,作用域是当前 function 没有声明的变量,直接赋值的话, 会自动创建变量 但作用域是全局的. //----------------- function doSth() { a ...
- 基于RXTX的串口通讯 windows64位系统可用
项目地址 http://download.csdn.net/detail/xqshishen/7739539
- VR技术驱动智慧旅游,自由漫步西湖不是梦
虚拟现实技术是今年最热门的科技之一,不少行业都在嫁接VR功能,其中旅游业也具备这方面的优势.VR+旅游,能让你足不出户即可感受清净唯美的名胜古迹.据591ARVR资讯网www.591arvr ...
- Excel大批量导入数据到SQLServer数据库-万条只用1秒
private string ExcelToStudent() { /*---*/ var preStr = DateTime.Now.ToString("yyyyMMddHHmmssfff ...
- CSS3实现开门动画
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&qu ...
- View基础知识
一.View基础知识 View 是Android中所有控件的基类,是一种界面层的控件的一种抽象,代表了一个控件 1.View的位置参数 View的四个属性:top(左上角纵坐标) left(左 ...
- 在docker 中配置hadoop1.2.1 cluser
最近一直在找工作,比较空闲,就没事研究一下hadoop,网上的视频及书,讲的差不多都是1.2.1这个版本,然后就试着在docker中搭建了一个hadoop集群, 项目已经放到了github上面了,供新 ...