Objective-C 語言和JavaScript語言的相互調(diào)用

?一.Objective-C調(diào)用javaScript

? iOS 開發(fā)中,原生界面調(diào)用UIWebView 一般是通過 stringByEvaluatingJavaScriptFromString 這個方法來調(diào)用UIWebView 界面上的Javascript 代碼的。方法很簡單,用法更簡單。只需要在UIWebView 的回調(diào)方法- (void)webViewDidFinishLoad:(UIWebView *)webView 之中直接調(diào)用 ?[self.webview stringByEvaluatingJavaScriptFromString:@"alert('do')"];

二.javaScript 調(diào)用 Objective-C

?業(yè)界一般有如下兩種方案:

1.曲線救國方案:

UIWebView 內(nèi)發(fā)起的所有請求,都可以通過delegate函數(shù)在原生界面得到通知,于是我們可以在UIWebView 內(nèi)發(fā)起一個特殊的網(wǎng)絡(luò)請求,一般情況下請求的是一個虛擬地址(比喻說:gap://mathsjfos),主要是幫助我們在delegate方法中得到界面通知,完成邏輯調(diào)轉(zhuǎn)。這- (void)webViewDidFinishLoad:(UIWebView *)webView 中 處理界面邏輯,然后可以通過stringByEvaluatingJavaScriptFromString 回到j(luò)avaScript。

2.直接調(diào)用方案:

iOS7 中新加入 JavaScriptCore.framework框架,用來處理JavaScript。JavaScriptCore 是蘋果 Safari 瀏覽器的 JavaScript 引擎,JavaScriptCor在 OS X 平臺上很早就存在的,而在 iOS 平臺,直到iOS7才對外開放,并提供了 Objective-C 的接口。

了解以下幾個類:

JSContext:An instance of JSContext represents a JavaScript execution environment.(一個 Context 就是一個 JavaScript 代碼執(zhí)行的環(huán)境,也叫作用域。)

JSValue:Conversion between Objective-C and JavaScript types.(JS是弱類型的,ObjectiveC是強(qiáng)類型的,JSValue被引入處理這種類型差異,在 Objective-C 對象和 JavaScript 對象之間起轉(zhuǎn)換作用)

可以通過兩種方式在 JavaScript 中調(diào)用 Objective-C

■ Blocks :JS functions (對應(yīng) JS 函數(shù))

■ JSExport protocol :JS objects (對應(yīng) JS 對象)

這里我們只介紹第一種方式。

說到這里,其實在JavaScriptCore.framework框架內(nèi),直接可以通過[context evaluateScript:testScript];完成Objective-C對javaScript的調(diào)用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 隨著H5技術(shù)的興起,在iOS開發(fā)過程中,難免會遇到原生應(yīng)用需要和H5頁面交互的問題。其中會涉及方法調(diào)用及參數(shù)傳值等...
    Chris_js閱讀 3,237評論 1 8
  • 跟原生開發(fā)相比,H5的開發(fā)相對來一個成熟的框架和團(tuán)隊來講在開發(fā)速度和開發(fā)效率上有著比原生很大的優(yōu)勢,至少不用等待審...
    大沖哥閱讀 1,903評論 0 7
  • JavaScriptCore和Objective-C144 作者 BobooO2016.05.09 20:20 字...
    張不二01閱讀 430評論 0 1
  • OC與JS交互之JavaScriptCore 本文摘抄自:https://hjgitbook.gitbooks.i...
    大沖哥閱讀 1,111評論 0 1
  • 圖片發(fā)自簡書App 高加林是一個在人生路上的艱苦跋涉者,而不是一個已經(jīng)走完人生道路的單純的勝利者或失敗者。他的內(nèi)心...
    十年長安閱讀 382評論 0 0

友情鏈接更多精彩內(nèi)容