色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>KSWebView基于WKWebview進行二次封裝的WebView

KSWebView基于WKWebview進行二次封裝的WebView

2022-06-24 | zip | 0.47 MB | 次下載 | 2積分

資料介紹

授權協議 未知
開發語言 Objective-C
軟件類型 開源軟件
所屬分類 iOS代碼庫網頁(Webview)

軟件簡介

KSWebView,最好的 WKWebView 繼承者。

KSWebView是基于WKWebview進行2次封裝的WebView。

KSWebView具有:

  • 用JS語句的方式調用原生類/對象,方便快捷,老板提出來的臨時需求也能馬上解決的方式。

  • 無縫JS與原生交互 (原生與JS獲得各自的Return值) (一句語句注冊JS方法調用回調)

  • 無縫JS與原生數據交互 丟棄cookie,數據由自己自由的管理,而且與原生互通。

  • 本地數據存儲模塊支持KVO,當數值發生變化時,注冊了該值的觀察者無論原生還是JS端都可以收到更新回調

KSWebView的整體結構如下圖?

pYYBAGKp4IWAQYbFAAIQ8J6YiOk441.png

用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

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 91久久99久91天天拍拍| 99久久99久久久精品齐齐鬼色| 国产专区青青草原亚洲| 亚洲人成电影网站色2017| 久久亚洲AV成人无码国产漫画| 51精品少妇人妻AV一区二区| 色即是空之甜性涩爱| 精品免费久久久久久影院| 波多野结衣 熟女| 亚洲 日本 中文字幕 制服| 久久精品九九亚洲精品天堂| 岛国片在线看| 在线播放免费人成视频| 日本人奶水中文影片| 精品久久久噜噜噜久久久app| 国产色精品久久人妻无码看片| 97成人精品视频在线播放| 最新国产av.在线视频| 亚洲AV无码A片在线观看蜜桃| 网友自拍偷拍| 男人舔女人的阴部黄色骚虎视频| 国产精品私人玩物在线观看| 18禁黄久久久AAA片| 亚洲 欧美 国产 综合 播放| 性欧美video另类hd高清| 人妻久久久精品99系列AV| 久久精品国产午夜伦班片| 久久99re6国产在线播放| 国产麻豆AV伦| 好男人在线观看视频观看高清视频免费| 成人性生交大片免费看4| 99re28久久热在线观看| 伊人久久大香线蕉综合网站| 午夜AV亚洲一码二中文字幕青青| 日本黄色官网| 午夜AV国产欧美亚洲高清在线| 亚洲色婷婷久久精品AV蜜桃久久| 欲插爽乱浪伦骨| 野花日本手机观看大全免费3| 亚洲、国产综合视频| 亚洲在线无码免费观看|