iOS中JS和OC相互調(diào)用實現(xiàn)混合開發(fā)(JavaScriptCore)

目前JS調(diào)用OC主要分為兩種情況

1.JS里面直接調(diào)用方法;

2.JS里通過對象調(diào)用方法;

方式1:JS里面直接調(diào)用方法(使用block),該方式開發(fā)中一般不采用,故簡單代過

//網(wǎng)頁加載完成調(diào)用此方法

-(void)webViewDidFinishLoad:(UIWebView*)webView

{

? ? ? ?//iOS調(diào)用JS ,首先創(chuàng)建JSContext 對象(此處通過當(dāng)前webView的鍵獲取到j(luò)scontext)

? ? ? JSContext*context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

? ? ? //js調(diào)用iOS

? ? ? //第一種情況

? ? ? //其中test1就是js的方法名稱,賦給是一個block 里面是iOS代碼

? ? ?//此方法最終將打印出所有接收到的參數(shù),js參數(shù)是不固定的 我們測試一下就知道

? ? ?context[@"test1"] = ^() {

? ? ?NSArray*args = [JSContextcurrentArguments];

? ? ?for(id obj in args) {

? ? ?NSLog(@"%@",obj);

? ? ?}

};

? ? ? ? ?//首先準(zhǔn)備一下js代碼樊零,來調(diào)用js的函數(shù)test1 然后執(zhí)行

? ? ? ? //一個參數(shù)

? ? ? ? ?NSString*jsFunctStr=@"test1('參數(shù)1')";

? ? ? ? [contextevaluateScript:jsFunctStr];

? ? ? ? //二個參數(shù)

? ? ? ?NSString*jsFunctStr1=@"test1('參數(shù)a','參數(shù)b')";

? ? ? ?[contextevaluateScript:jsFunctStr1];

}


方式2:JS里通過對象調(diào)用方法

新建IOSBridge繼承自NSObject,然后導(dǎo)入JS交互類庫頭文件#import<JavaScriptCore/JavaScriptCore.h>

(1).首先創(chuàng)建一個實現(xiàn)了JSExport協(xié)議的協(xié)議

@protocol IOSBridgeProtocol

-(NSString*)getData:(NSString*)params;

-(NSString*)doAction:(NSString*)params;

@end

(2).定義代理屬性

@property(nonatomic, weak) id delegate;

(3).在IOSBridge.m文件中實現(xiàn)方法

-(NSString*)getData:(NSString*)params

{

? ? ? TTLog(@"調(diào)用了getData--- %@",params);

? ? ? ?return @"黃文濤";

}

-(NSString*)doAction:(NSString*)params

{

? ? ?TTLog(@"調(diào)用了doAction--- %@",params); ?

? ? ? return @"黃文濤";

}

(4).如何使用

導(dǎo)入#import"IOSBridge.h"

然后,定義私有屬性

@property(nonatomic, strong) JSContext*context;

獲取JSContext

_context= [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];

IOSBridge*iOSBridge = [[IOSBridge alloc] init];

self.context[@"IOSBridge"] = iOSBridge;

ok ,兩種方式都完成了,歡迎交流指正, 本人QQ:1334627194

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市古拴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌真友,老刑警劉巖黄痪,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盔然,居然都是意外死亡桅打,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門愈案,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挺尾,“玉大人,你說我怎么就攤上這事站绪≡馄蹋” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵恢准,是天一觀的道長魂挂。 經(jīng)常有香客問我,道長馁筐,這世上最難降的妖魔是什么涂召? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮眯漩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己赦抖,他們只是感情好舱卡,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著队萤,像睡著了一般轮锥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上要尔,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天舍杜,我揣著相機與錄音,去河邊找鬼赵辕。 笑死既绩,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的还惠。 我是一名探鬼主播饲握,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蚕键!你這毒婦竟也來了救欧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤锣光,失蹤者是張志新(化名)和其女友劉穎笆怠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體誊爹,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蹬刷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了替废。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箍铭。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖椎镣,靈堂內(nèi)的尸體忽然破棺而出诈火,到底是詐尸還是另有隱情,我是刑警寧澤状答,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布冷守,位于F島的核電站,受9級特大地震影響惊科,放射性物質(zhì)發(fā)生泄漏拍摇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一馆截、第九天 我趴在偏房一處隱蔽的房頂上張望充活。 院中可真熱鬧蜂莉,春花似錦、人聲如沸混卵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幕随。三九已至蚁滋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赘淮,已是汗流浹背辕录。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留梢卸,地道東北人走诞。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像低剔,于是被迫代替她去往敵國和親速梗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 隨著H5技術(shù)的興起襟齿,在iOS開發(fā)過程中姻锁,難免會遇到原生應(yīng)用需要和H5頁面交互的問題。其中會涉及方法調(diào)用及參數(shù)傳值等...
    Chris_js閱讀 3,060評論 1 8
  • 我們講到的iOS調(diào)用js下來我們使用js調(diào)用iOSjs調(diào)用iOS分兩種情況 一猜欺,js里面直接調(diào)用方法 二位隶,js里面...
    默默的前行閱讀 855評論 0 1
  • 蘋果公布了JavaScriptCore.framework 它使得JS與OC的交互更加方便了。 一开皿、iOS調(diào)用js...
    1d5cb7cff98d閱讀 1,109評論 0 0
  • 跟原生開發(fā)相比涧黄,H5的開發(fā)相對來一個成熟的框架和團隊來講在開發(fā)速度和開發(fā)效率上有著比原生很大的優(yōu)勢,至少不用等待審...
    大沖哥閱讀 1,828評論 0 7
  • 晨見日記第二篇 昨天:昨天晚上開始制定計劃赋荆。 1笋妥、早上4點半起床:@喝一杯溫水@上廁所@簡單洗臉:讓自己很快清醒@...
    本色相閱讀 173評論 0 0