资料介绍
软件简介
KSWebView,最好的 WKWebView 继承者。
KSWebView是基于WKWebview进行2次封装的WebView。
KSWebView具有:
-
用JS语句的方式调用原生类/对象,方便快捷,老板提出来的临时需求也能马上解决的方式。
-
无缝JS与原生交互 (原生与JS获得各自的Return值) (一句语句注册JS方法调用回调)
-
无缝JS与原生数据交互 丢弃cookie,数据由自己自由的管理,而且与原生互通。
-
本地数据存储模块支持KVO,当数值发生变化时,注册了该值的观察者无论原生还是JS端都可以收到更新回调
KSWebView的整体结构如下图
用JS语句的方式调用原生类/对象
例如我们想要在JS中执行下列OC代码
Objective-C:
UIViewController *vc = [[UIViewController alloc]init]; [vc setTitle:@"测试标题"]; UIColor *whiteColor = [UIColor whiteColor]; [[vc view] setBackgroundColor:whiteColor]; [[vc view] setTag:17287]; UINavigationController *nav = [[[UIApplication sharedApplication] keyWindow] rootViewController]; [nav pushViewController:vc animated:YES];
JavaScript:
//先导入要用到的OC类 var tools = window.OCTools; var UIViewController = tools.importClass("UIViewController"); var UIColor = tools.importClass("UIColor"); var UIApplication = tools.importClass("UIApplication"); var vc = UIViewController.alloc().init(); vc.setTitle("测试标题"); var white = UIColor.whiteColor(); vc.view().setBackgroundColor(white); vc.view().setTag(17287); var nav = UIApplication.sharedApplication().keyWindow().rootViewController(); nav.pushViewControlleranimated(vc, true); tools.releaseObjects();//调用完毕后为了防止内存溢出必须释放
是不是很简单?只要先导入要用到的类,然后就和用JS写一个OC代码一样简单!需要注意的是,调用多个参数的方法时需要去掉所有的冒号,然后将参数一次按顺序放入传参括号内,就可以了。例如:
Objective-C:
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"描述信息" delegate:nil cancelButtonTitle:@"关闭" otherButtonTitles:nil]; [alert show];
JavaScript:
var UIAlertView = window.OCTools.importClass("UIAlertView"); var alert = UIAlertView.alloc().initWithTitlemessagedelegatecancelButtonTitleotherButtonTitles("提示","描述信息",null,"关闭",null); alert.show(); window.OCTools.releaseObjects();//调用完毕后为了防止内存溢出必须释放
返回值类型
一切js可以识别的格式都是可以被js直接使用的(例如:string,number 等等).oc对象结构体等变量承接之后只可以当作方法传的值,因为js无法识别。这是必然,js是无法使用oc对象的。例如:
Objective-C:
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"描述信息" delegate:nil cancelButtonTitle:@"关闭" otherButtonTitles:nil]; [alert setTag:15269]; [alert setTitle:@"新标题"]; NSInteger tag = [alert tag]; NSString *title = [alert title]; [alert show];
JavaScript:
var UIAlertView = window.OCTools.importClass("UIAlertView"); var alert = UIAlertView.alloc().initWithTitlemessagedelegatecancelButtonTitleotherButtonTitles("提示","描述信息",null,"关闭",null); alert.setTag(15269); alert.setTitle("新标题"); var tag = alert.tag();//返回的number是可以直接使用的 var title = alert.title();//返回的string是可以直接使用的 alert.show(); window.OCTools.releaseObjects();//调用完毕后为了防止内存溢出必须释放
Dictionary与Array
快速的将JS对象转换为NSDictionary或将JS数组转换为NSArray
Dictionary:
var data = { 'key': 'value', 'anyKey': 'anyValue' }; //将JS对象转换为NSDictionary var NSDictionary = window.OCTools.importClass("NSDictionary"); var dict = NSDictionary.dictionaryWithDictionary(data); //将NSDictionary转换为JS对象 var jsonString = dict.mj_JSONString(); var jsObject = JSON.parse(jsonString); window.OCTools.releaseObjects();//调用完毕后为了防止内存溢出必须释放
Array:
var data = ["NO.1", "NO.2", "NO.3", "NO.4"]; //将JS对象转换为NSDictionary var NSArray = window.OCTools.importClass("NSArray"); var arr = NSArray.arrayWithArray(data); //将NSDictionary转换为JS对象 var jsonString = arr.mj_JSONString(); var jsArray = JSON.parse(jsonString); window.OCTools.releaseObjects();//调用完毕后为了防止内存溢出必须释放
其实本质上JS的对象/数组可以直接当做NSDictionary/NSArray参数传递,上述只是提供了互相转换的方法。
importClass: 该方法在内部已经实现了不管你重复import多少次相同的Class都拿到的是相同的一个,所以放心大胆的用,不用担心,不过最好将其放在界面加载完成后importClass,防止出现问题。
releaseObjects: 因为内部对象都是有引用的所以只有调用了此方法才会销毁所有对象,如果长期不销毁内存会越来越大,严重就会导致崩溃,所以请尽量在使用完oc调用后调用此方法来销毁所有oc对象。
关于无缝JS与原生交互/本地数据存储模块支持KVO的介绍请查看demo
- 线路电镀(二次铜).zip
- labview字符串控件二次封装 4次下载
- DCDC二次电源辐射特性研究
- 基于光华逼近函数的求解凸二次规划方法 3次下载
- 什么是一次电源?什么是二次电源?资料下载
- 基于风险传递网络的智能变电站二次系统风险评估 1次下载
- 针对二次再热机组DEH建模分析 0次下载
- 电气二次接线识图正文 86次下载
- 电气二次接线识图 0次下载
- LED路灯的二次光学设计 4次下载
- AutoCAD VBA二次开发教程 0次下载
- 二次调节流量耦联系统功率匹配研究 16次下载
- 新型二次电池材料
- 基于约束判决的二次门限检测
- 二次电池的特性和应用
- 电力系统一次设备和二次设备区别,二次回路的分类 1335次阅读
- 关于二次回路工作的安全规定 3390次阅读
- 二次回路简述 675次阅读
- 自动焊接工艺的次焊接和二次焊接的区别及优缺点分析 8615次阅读
- 电流互感器二次侧接地原因 2.4w次阅读
- 二次回路的作用 8962次阅读
- 电气二次回路的看图口诀 8164次阅读
- 电气二次控制回路基本知识 1w次阅读
- 什么是二次设备?二次设备有哪些 5.3w次阅读
- 电气二次常见问题有哪些_40个电气二次常见问题盘点 5271次阅读
- 电流互感器二次侧是什么意思_电流互感器二次侧为什么不能开路 8.1w次阅读
- 二次电池是什么_二次电池有哪些_二次电池充放电方程式 2.3w次阅读
- mapreduce二次排序_ mapreduce二次排序原理 6198次阅读
- 电气二次回路看图5大口诀的详细分析 7.2w次阅读
- 基于TDD-LTE终端二次谐波的抑制应用设计 2971次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多