首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    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就会一直存活。

    14.5K143

    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.7K40

    能让 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.7K20
    领券