資料介紹
軟件簡(jiǎn)介
KSWebView,最好的 WKWebView 繼承者。
KSWebView是基于WKWebview進(jìn)行2次封裝的WebView。
KSWebView具有:
-
用JS語句的方式調(diào)用原生類/對(duì)象,方便快捷,老板提出來的臨時(shí)需求也能馬上解決的方式。
-
無縫JS與原生交互 (原生與JS獲得各自的Return值) (一句語句注冊(cè)JS方法調(diào)用回調(diào))
-
無縫JS與原生數(shù)據(jù)交互 丟棄cookie,數(shù)據(jù)由自己自由的管理,而且與原生互通。
-
本地?cái)?shù)據(jù)存儲(chǔ)模塊支持KVO,當(dāng)數(shù)值發(fā)生變化時(shí),注冊(cè)了該值的觀察者無論原生還是JS端都可以收到更新回調(diào)
KSWebView的整體結(jié)構(gòu)如下圖?

用JS語句的方式調(diào)用原生類/對(duì)象
例如我們想要在JS中執(zhí)行下列OC代碼
Objective-C:
UIViewController?*vc?=?[[UIViewController?alloc]init]; [vc?setTitle:@"測(cè)試標(biāo)題"]; UIColor?*whiteColor?=?[UIColor?whiteColor]; [[vc?view]?setBackgroundColor:whiteColor]; [[vc?view]?setTag:17287]; UINavigationController?*nav?=?[[[UIApplication?sharedApplication]?keyWindow]?rootViewController]; [nav?pushViewController:vc?animated:YES];
JavaScript:
//先導(dǎo)入要用到的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("測(cè)試標(biāo)題");
var?white?=?UIColor.whiteColor();
vc.view().setBackgroundColor(white);
vc.view().setTag(17287);
var?nav?=?UIApplication.sharedApplication().keyWindow().rootViewController();
nav.pushViewControlleranimated(vc,?true);
tools.releaseObjects();//調(diào)用完畢后為了防止內(nèi)存溢出必須釋放
是不是很簡(jiǎn)單?只要先導(dǎo)入要用到的類,然后就和用JS寫一個(gè)OC代碼一樣簡(jiǎn)單!需要注意的是,調(diào)用多個(gè)參數(shù)的方法時(shí)需要去掉所有的冒號(hào),然后將參數(shù)一次按順序放入傳參括號(hào)內(nèi),就可以了。例如:
Objective-C:
UIAlertView?*alert?=?[[UIAlertView?alloc]initWithTitle:@"提示"?message:@"描述信息"?delegate:nil?cancelButtonTitle:@"關(guān)閉"?otherButtonTitles:nil]; [alert?show];
JavaScript:
var?UIAlertView?=?window.OCTools.importClass("UIAlertView");
var?alert?=?UIAlertView.alloc().initWithTitlemessagedelegatecancelButtonTitleotherButtonTitles("提示","描述信息",null,"關(guān)閉",null);
alert.show();
window.OCTools.releaseObjects();//調(diào)用完畢后為了防止內(nèi)存溢出必須釋放
返回值類型
一切js可以識(shí)別的格式都是可以被js直接使用的(例如:string,number 等等).oc對(duì)象結(jié)構(gòu)體等變量承接之后只可以當(dāng)作方法傳的值,因?yàn)閖s無法識(shí)別。這是必然,js是無法使用oc對(duì)象的。例如:
Objective-C:
UIAlertView?*alert?=?[[UIAlertView?alloc]initWithTitle:@"提示"?message:@"描述信息"?delegate:nil?cancelButtonTitle:@"關(guān)閉"?otherButtonTitles:nil]; [alert?setTag:15269]; [alert?setTitle:@"新標(biāo)題"]; NSInteger?tag?=?[alert?tag]; NSString?*title?=?[alert?title]; [alert?show];
JavaScript:
var?UIAlertView?=?window.OCTools.importClass("UIAlertView");
var?alert?=?UIAlertView.alloc().initWithTitlemessagedelegatecancelButtonTitleotherButtonTitles("提示","描述信息",null,"關(guān)閉",null);
alert.setTag(15269);
alert.setTitle("新標(biāo)題");
var?tag?=?alert.tag();//返回的number是可以直接使用的
var?title?=?alert.title();//返回的string是可以直接使用的
alert.show();
window.OCTools.releaseObjects();//調(diào)用完畢后為了防止內(nèi)存溢出必須釋放
Dictionary與Array
快速的將JS對(duì)象轉(zhuǎn)換為NSDictionary或?qū)S數(shù)組轉(zhuǎn)換為NSArray
Dictionary:
var?data?=?{
'key':?'value',
'anyKey':?'anyValue'
};
//將JS對(duì)象轉(zhuǎn)換為NSDictionary
var?NSDictionary?=?window.OCTools.importClass("NSDictionary");
var?dict?=?NSDictionary.dictionaryWithDictionary(data);
//將NSDictionary轉(zhuǎn)換為JS對(duì)象
var?jsonString?=?dict.mj_JSONString();
var?jsObject?=?JSON.parse(jsonString);
window.OCTools.releaseObjects();//調(diào)用完畢后為了防止內(nèi)存溢出必須釋放
Array:
var?data?=?["NO.1",?"NO.2",?"NO.3",?"NO.4"];
//將JS對(duì)象轉(zhuǎn)換為NSDictionary
var?NSArray?=?window.OCTools.importClass("NSArray");
var?arr?=?NSArray.arrayWithArray(data);
//將NSDictionary轉(zhuǎn)換為JS對(duì)象
var?jsonString?=?arr.mj_JSONString();
var?jsArray?=?JSON.parse(jsonString);
window.OCTools.releaseObjects();//調(diào)用完畢后為了防止內(nèi)存溢出必須釋放
其實(shí)本質(zhì)上JS的對(duì)象/數(shù)組可以直接當(dāng)做NSDictionary/NSArray參數(shù)傳遞,上述只是提供了互相轉(zhuǎn)換的方法。
importClass:??該方法在內(nèi)部已經(jīng)實(shí)現(xiàn)了不管你重復(fù)import多少次相同的Class都拿到的是相同的一個(gè),所以放心大膽的用,不用擔(dān)心,不過最好將其放在界面加載完成后importClass,防止出現(xiàn)問題。
releaseObjects:?因?yàn)閮?nèi)部對(duì)象都是有引用的所以只有調(diào)用了此方法才會(huì)銷毀所有對(duì)象,如果長(zhǎng)期不銷毀內(nèi)存會(huì)越來越大,嚴(yán)重就會(huì)導(dǎo)致崩潰,所以請(qǐng)盡量在使用完oc調(diào)用后調(diào)用此方法來銷毀所有oc對(duì)象。
關(guān)于無縫JS與原生交互/本地?cái)?shù)據(jù)存儲(chǔ)模塊支持KVO的介紹請(qǐng)查看demo
- 線路電鍍(二次銅).zip
- labview字符串控件二次封裝 4次下載
- DCDC二次電源輻射特性研究
- 基于光華逼近函數(shù)的求解凸二次規(guī)劃方法 3次下載
- 什么是一次電源?什么是二次電源?資料下載
- 基于風(fēng)險(xiǎn)傳遞網(wǎng)絡(luò)的智能變電站二次系統(tǒng)風(fēng)險(xiǎn)評(píng)估 1次下載
- 針對(duì)二次再熱機(jī)組DEH建模分析 0次下載
- 電氣二次接線識(shí)圖正文 93次下載
- 電氣二次接線識(shí)圖 0次下載
- LED路燈的二次光學(xué)設(shè)計(jì) 4次下載
- AutoCAD VBA二次開發(fā)教程 0次下載
- 二次調(diào)節(jié)流量耦聯(lián)系統(tǒng)功率匹配研究 16次下載
- 新型二次電池材料
- 基于約束判決的二次門限檢測(cè)
- 二次電池的特性和應(yīng)用
- 電力系統(tǒng)一次設(shè)備和二次設(shè)備區(qū)別,二次回路的分類 3137次閱讀
- 二次回路的基本概念 5127次閱讀
- 關(guān)于二次回路工作的安全規(guī)定 4619次閱讀
- 二次回路簡(jiǎn)述 821次閱讀
- 自動(dòng)焊接工藝的次焊接和二次焊接的區(qū)別及優(yōu)缺點(diǎn)分析 9084次閱讀
- 電流互感器二次側(cè)接地原因 2.5w次閱讀
- 二次回路的作用 9299次閱讀
- 電氣二次回路的看圖口訣 8710次閱讀
- 電氣二次控制回路基本知識(shí) 1w次閱讀
- 什么是二次設(shè)備?二次設(shè)備有哪些 5.4w次閱讀
- 電氣二次常見問題有哪些_40個(gè)電氣二次常見問題盤點(diǎn) 5408次閱讀
- 二次電池是什么_二次電池有哪些_二次電池充放電方程式 2.3w次閱讀
- mapreduce二次排序_ mapreduce二次排序原理 6297次閱讀
- 電氣二次回路看圖5大口訣的詳細(xì)分析 7.2w次閱讀
- 基于TDD-LTE終端二次諧波的抑制應(yīng)用設(shè)計(jì) 3194次閱讀
下載排行
本周
- 1PFC電路與BOOST電路設(shè)計(jì)實(shí)例分享
- 1.83 MB | 12次下載 | 4 積分
- 2世平基于靈動(dòng)微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
- 10.93 MB | 11次下載 | 免費(fèi)
- 3電源測(cè)試報(bào)告-基于 國(guó)民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
- 6.47 MB | 11次下載 | 免費(fèi)
- 4PWM控制器的控制方法
- 0.39 MB | 3次下載 | 4 積分
- 5電流檢測(cè)芯片F(xiàn)P135應(yīng)用說明
- 1.24 MB | 3次下載 | 免費(fèi)
- 6全面解讀被動(dòng)式與主動(dòng)式PFC電路
- 1.27 MB | 1次下載 | 4 積分
- 7HC88L051F4低功耗芯片規(guī)格書
- 4.76 MB | 1次下載 | 免費(fèi)
- 8CIU32D655x5數(shù)據(jù)手冊(cè)
- 2.14 MB | 1次下載 | 免費(fèi)
本月
- 1常用電子元器件使用手冊(cè)
- 2.40 MB | 52次下載 | 免費(fèi)
- 2高功率密度碳化硅MOSFET軟開關(guān)三相逆變器損耗分析
- 2.27 MB | 33次下載 | 10 積分
- 3PFC電路與BOOST電路設(shè)計(jì)實(shí)例分享
- 1.83 MB | 12次下載 | 4 積分
- 4世平基于靈動(dòng)微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
- 10.93 MB | 11次下載 | 免費(fèi)
- 5電源測(cè)試報(bào)告-基于 國(guó)民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
- 6.47 MB | 11次下載 | 免費(fèi)
- 6USB拓展塢PCB圖資料
- 0.57 MB | 11次下載 | 免費(fèi)
- 7MS1826 HDMI 多功能視頻處理器數(shù)據(jù)手冊(cè)
- 4.51 MB | 9次下載 | 免費(fèi)
- 8HAL9303線性霍爾效應(yīng)傳感器技術(shù)手冊(cè)
- 0.70 MB | 9次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935134次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191424次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183352次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81600次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73818次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App






創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論