首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入理解JavaScriptCore

    JSContext 一个JSContext表示了一次JS的执行环境。...同理,JSContext就是JS语言的执行环境,所有JS代码的执行必须在一个JSContext之中,在WebView中也是一样,我们可以通过KVC的方式获取当时WebView的JSContext。...而这个全局对象其实也是JSContext最核心的东西,当我们通过KVC方式与JSContext进去取值赋值的时候,实际上都是在跟这个全局对象做交互,几乎所有的东西都在全局对象里,可以说,JSContext...同时值得注意的是,每个JSContext都从属于一个JSVM。我们可以通过JSContext的只读属性virtualMachine获得当前JSContext绑定的JSVM。...JSContext和JSVM是多对一的关系,一个JSContext只能绑定一个JSVM,但是一个JSVM可以同时持有多个JSContext

    1.4K30

    JavaScriptCore全面解析 (上篇)

    实际运行输出的log是: start tick_1 tick_1 tick_1 tick_1 end tick tick_2 四、 JSContext 一个JSContext对象代表一个JavaScript...API Reference NS_CLASS_AVAILABLE(10_9, 7_0) @interface JSContext : NSObject /* 创建一个JSContext,同时会创建一个新的...JSContext访问JS对象 一个JSContext对象对应了一个全局对象(global object)。例如web浏览器中中的JSContext,其全局对象就是window对象。...API Reference /* 为JSContext提供下标访问元素的方式 */ @interface JSContext (SubscriptSupport) /* 首先将key转为JSValue...每个JSValue对象都持有其JSContext对象的强引用,只要有任何一个与特定JSContext关联的JSValue被持有(retain),这个JSContext就会一直存活。

    13.8K142

    能让 JS 执行的 JavascriptCore ,到底是啥

    在底层,JavaScriptCore 由几个关键组件组成:JSVirtualMachine、JSContext 和 JSValue。那它们是如何组合在一起的呢?往下看。...JSContext JSContext 对象代表 JavaScript 代码的执行环境。 它对应于单个全局对象,它如同 Web 开发中的 window 对象。...JSValue 的实例与它所在的 JSContext 对象相关联,来自上下文对象的任何值都将是 JSValue 类型。...JS 代码 在 IOS 中要调用 JS,首先要在 swift 文件顶部引入 JavaScriptCore 包: import JavaScriptCore 接着,你可以在 Swift 代码中创建一个 JSContext...对象,使用这个对象的 evaluateScript 方法,可以执行一段 JS 代码: let context = JSContext() JSValue *value = context.evaluateScript

    1.4K20

    iOS引入JavaScriptCore引擎框架(二)

    为何放弃第一种方案 UIWebView的JSContext获取     上篇中,我们通过简单的kvc获取UIWebVIew的JSContext,但是实际上,apple并未给开发者提供访问UIWebView...虽然通过KVC可达到目标,但是当APP采用该种hack方法时,有很大几率不能通过APP Store的审核,这对于一个基于上线的商业APP而言是难以忍受的,所以我们必须寻找另一种方法来获取UIWebView的JSContext...其次,我们既然获取到了JSContext,但是并不知道JSContext与UIWebVIew的对应关系,我们的ViewController中可能会有多个UIWebView,如何将获取的JSContext...在此处有一个简单的方法,就是获取所有的UIWebView对象,在每个对象中执行一段js代码,在js上下文设置一个变量做为标记,然后在我们获取的JSContext中判断该变量是否与遍历的UIWebVIew...这样,我们可以在UIWebView的webViewDidStartLoad和webViewDidFinishLoad之间获取到JSContext,进行oc和js的双向通信。

    1.5K40
    领券