資料介紹
軟件簡介
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次下載
- 電氣二次接線識圖正文 93次下載
- 電氣二次接線識圖 0次下載
- LED路燈的二次光學設計 4次下載
- AutoCAD VBA二次開發教程 0次下載
- 二次調節流量耦聯系統功率匹配研究 16次下載
- 新型二次電池材料
- 基于約束判決的二次門限檢測
- 二次電池的特性和應用
- 電力系統一次設備和二次設備區別,二次回路的分類 3137次閱讀
- 二次回路的基本概念 5127次閱讀
- 關于二次回路工作的安全規定 4619次閱讀
- 二次回路簡述 821次閱讀
- 自動焊接工藝的次焊接和二次焊接的區別及優缺點分析 9084次閱讀
- 電流互感器二次側接地原因 2.5w次閱讀
- 二次回路的作用 9299次閱讀
- 電氣二次回路的看圖口訣 8710次閱讀
- 電氣二次控制回路基本知識 1w次閱讀
- 什么是二次設備?二次設備有哪些 5.4w次閱讀
- 電氣二次常見問題有哪些_40個電氣二次常見問題盤點 5408次閱讀
- 二次電池是什么_二次電池有哪些_二次電池充放電方程式 2.3w次閱讀
- mapreduce二次排序_ mapreduce二次排序原理 6297次閱讀
- 電氣二次回路看圖5大口訣的詳細分析 7.2w次閱讀
- 基于TDD-LTE終端二次諧波的抑制應用設計 3194次閱讀
下載排行
本周
- 1涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 2錦銳科技CA51F2 SDK開發包
- 24.06 MB | 29次下載 | 1 積分
- 3錦銳CA51F005 SDK開發包
- 19.47 MB | 3次下載 | 1 積分
- 4蘋果iphone 11電路原理圖
- 4.98 MB | 3次下載 | 2 積分
- 5基礎模擬電子電路
- 3.80 MB | 3次下載 | 1 積分
- 6RA-Eco-RA6M4-100PIN-V1.0開發板資料
- 34.89 MB | 1次下載 | 免費
- 7STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊
- 3.32 MB | 1次下載 | 免費
- 8聯想A820t手機維修圖紙包括主板原理圖 尾板原理圖 點位圖
- 0.62 MB | 次下載 | 5 積分
本月
- 1AI智能眼鏡產業鏈分析
- 4.43 MB | 383次下載 | 免費
- 2蘇泊爾電磁爐線路的電路原理圖資料合集
- 2.02 MB | 296次下載 | 5 積分
- 3貼片三極管上的印字與真實名稱的對照表詳細說明
- 0.50 MB | 94次下載 | 1 積分
- 4長虹液晶電視R-HS310B-5HF01的電源板電路原理圖
- 0.46 MB | 91次下載 | 5 積分
- 5涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 76次下載 | 1 積分
- 6錦銳科技CA51F2 SDK開發包
- 24.06 MB | 29次下載 | 1 積分
- 7AO4803A雙P通道增強型場效應晶體管的數據手冊
- 0.11 MB | 28次下載 | 2 積分
- 8長虹液晶彩電LS29機芯的技術資料說明
- 3.42 MB | 16次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191388次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論