JavaScriptCore框架介绍

Posted zzfx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScriptCore框架介绍相关的知识,希望对你有一定的参考价值。

http://www.cocoachina.com/ios/20140409/8127.html

这个框架其实只是基于webkit中以C/C++实现的javascriptCore的一个包装,在旧版本iOS开发中,很多开发者也会自行将webkit的库引入项目编译使用。不过虽然iOS7把它当成了标准库,可惜目前,我还没有在Apple Developer中找到像那样的官方文档介绍这个框架的具体使用方法。

 
JavaScriptCore中的类
在项目中引入JavaScriptCore后,链到头文件中,除了大段的Copyright注释可以看到里面只要引入了5个文件,每个文件里都定义跟文件名对应的类:
1. JSContext
2. JSValue
3. JSManagedValue
4. JSVirtualMachine
5. JSExport
技术分享
 
虽说代码中的注释介绍的也比较详细了,但是如同一图顶万言,对程序员来说代码更有说服力。本文就先来说说这些类相对比较好理解但又很常用的JSContext和JSValue以及它们方法的使用方式和效果。
 
JSContext和JSValue
JSVirtualMachine为JavaScript的运行提供了底层资源,JSContext就为其提供着运行环境,通过- (JSValue *)evaluateScript:(NSString *)script;方法就可以执行一段JavaScript脚本,并且如果其中有方法、变量等信息都会被存储在其中以便在需要的时候使用。而JSContext的创建都是基于JSVirtualMachine:- (id)initWithVirtualMachine:(JSVirtualMachine *)virtualMachine;,如果是使用- (id)init;进行初始化,那么在其内部会自动创建一个新的JSVirtualMachine对象然后调用前边的初始化方法。
 
JSValue则可以说是JavaScript和Object-C之间互换的桥梁,它提供了多种方法可以方便地把JavaScript数据类型转换成Objective-C,或者是转换过去。其一一对应方式可见下表:
技术分享

以上是关于JavaScriptCore框架介绍的主要内容,如果未能解决你的问题,请参考以下文章

JavaScriptCore学习之JavaScriptCore

iOS上的javascriptcore框架可以接入网络吗?

JavaScript:浅谈iOS与H5的交互-JavaScriptCore框架

iOS上的javascriptcore框架可以访问网络吗?

使用 Swift iOS 中的 Javascriptcore 框架将 NSobject 传递给 javascript

脱离 WebView 的通信 JavaScriptCore