JavaScriptCore使用

简介

JavaScriptCore是iOS7引入的,用来方便OC与JS的交互,本文主要禅述JS调用OC方法。

使用

引入JavaScriptCore库

#import 

通过JSContext关联JS与OC代码。

在webView的webViewDidFinishLoad方法中获取JS运行上下文

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

JS调用OC方法有两种:
一种是通过Block。
另一种是注册协议。好处是:为所有被JS调用的方法提供一个域,防止与其他代码混淆。另一个好处是方法前端同时适配android和iOS程序。

设置作用域

self.context[@"HongLingLin_APP"] = self;

创建一个协议,该协议中提供所有JS调用的方法。

@protocol TestJSExport 
JSExportAs
(calculateForJS  /** handleFactorialCalculateWithNumber 作为js方法的别名 */,
 - (void)handleFactorialCalculateWithNumber:(NSNumber *)number
 );
- (void)pushViewController:(NSString *)view title:(NSString *)title;
@end

实现TestJSExport
在webView的VC里面去设置

  self.context[@"HongLingLin_APP"] = self; 

并实现协议。

在JS中通过

HongLingLin_APP.pushViewControllerTitle(
'SecondViewController'
,
'secondPushedFromJS'
)

就会调用TestJSExport协议的具体方法。

参考资料
https://github.com/shaojiankui/JavaScriptCore-Demo.git
http://nscoder.me/blog/2014/04/11/JavaScriptCoreSample/

你可能感兴趣的:(JavaScriptCore使用)