Mac10.9和iOS7新公开的框架JavaScriptCore.framework

官网的介绍

  • The JavaScript Core framework (JavaScriptCore.framework) provides Objective-C wrapper classes for many standard
    JavaScript objects. Use this framework to evaluate JavaScript code and parse JSON data. For information about the classes of this framework, see the header files.

网上的翻译是:提供了用Objective-C封装的大量标准JavaScript对象。通过该framework可以对JavaScript代码进行评估(evaluate),以及解析JSON。

实际也就是开放一个JavaScript的运行环境,供执行js代码。一些数据处理和运算不必再转成Objective-C来写,Apple帮忙搞定,每个JavaScript的对象都可以用C和Objective-C的类来访问。

目前还没有详细的文档描述接口的使用,但可以直接看代码头文件先睹为快。

在xcode5工程中导入JavaScriptCore.framework,

可以查看到其公开的头文件,里面就是新的API了。

这些文件里的信息会有帮助:

  • JSBase.h:声明了使用js的基本C函数:JSEvaluateScript执行,JSCheckScriptSyntax检查语法,JSGarbageCollect垃圾收集,都需要传入JSContextRef参数。
  • JSContext.h和JSContextRef.h:前者是Objective-C的接口,后者是C的接口,是JavaScript运行上下文的表示。
  • JSManagedValue.h、JSObjectRef.h、JSStringRef.h、JSStringRefCF.h、JSValue.h、JSValueRef.h:都是对javascript对象的C/Objective-C表示,提供不同语言的接口来访问和操作js对象。
//   Objective-C type  |   JavaScript type
// --------------------+---------------------
//         nil         |     undefined
//        NSNull       |        null
//       NSString      |       string
//       NSNumber      |   number, boolean
//     NSDictionary    |   Object object
//       NSArray       |    Array object
//        NSDate       |     Date object
//       NSBlock *     |   Function object *
//          id **      |   Wrapper object **
//        Class ***    | Constructor object ***

JavaScriptCore.framework是开源WebKit的一部分,从WWDC的介绍来看,Apple对Safari和WebKit做了很多优化和升级,看来这些开放的接口也是优化升级的一部分成果。Apple对开发者开放的WebKit接口通常都是Mac公开的多,iOS公开的少。这次也公开JavaScriptCore.framework这些新接口到iOS上,应该会是很给力的升级了。

因为还没有文档教怎么使用新框架,还需继续折腾尝试,最快的方法是直接查看最新的Mac WebKit源码是怎么应用这些API的。

例如:

static void* runJavaScriptThread(void* arg)
{
    JSGlobalContextRef ctx = JSGlobalContextCreate(0);
    JSStringRef scriptRef = JSStringCreateWithUTF8CString("'Hello World!'");

    JSValueRef exception = 0;
    JSEvaluateScript(ctx, scriptRef, 0, 0, 1, &exception);
    ASSERT(!exception);

    JSGlobalContextRelease(ctx);
    JSStringRelease(scriptRef);

    return 0;
}

各位前锋们一起加油吧。

转载请注明出处:http://blog.csdn.net/hursing

时间: 2024-11-03 21:53:33

Mac10.9和iOS7新公开的框架JavaScriptCore.framework的相关文章

新人学spring框架xml路径不会填

问题描述 新人学spring框架xml路径不会填 package spring; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.env.StandardEnvironment; public class DItest{ @

介绍Hadoop新的map-reduce框架(Yarn)的原理

读者通过本文中新旧 hadoop map-reduce 框架的对比,更能深刻理解新的 yarn 框架的技术原理和http://www.aliyun.com/zixun/aggregation/8511.html">设计思想,文中的 Demo 代码经过微小修改即可用于用户基于 hadoop 新框架的实际生产环境. 原 Hadoop MapReduce 框架的问题 对于业界的大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架,对于 Hadoop 框架的介

怎么选择Javascript框架(Javascript Framework)_javascript技巧

Ajax的兴起,给 Javascript带来了新的生机,大量的javascript框架(Javascript Framework)层出不穷,一些框架来至于开发人员项目经验的总结和提炼,也有一些框架来至于商业公司,同时以开源和商业两种方式发布.借助这些框 架,可以大大加速Ajax项目的开发速度,但同时也面临不同的学习曲线,以及架构扩展性等等问题.如何选择Javascript框架,成为开发人员和架构 师头痛的一个问题.如果你正面临这样的问题,希望下面的几个建议对你在选择javascript框架上会有

vs2010未安装项目的目标框架 .net framework 4.0

问题描述 vs2010未安装项目的目标框架 .net framework 4.0 每次打开一个现有工程就会出现一下对话框但是我的框架已经装了好几次了这个该怎么办,要报警了!!!可以新建,但是关掉再打开.sln就不行了 解决方案 很奇怪,vs2010本身就是基于.net 4.0的,按理说不会这么提示,建议你问问代码的作者.或者看看他有没有留下什么文档.比如用的是英文版的vs,或者vs2010 sp1. 解决方案二: 安装一个 .net framework 4.0

超越SOA:动态业务应用的新企业应用框架(2)

第二部分:动态业务应用构建实践--两个自适应系统的故事 生产力提高是生活水平提高的基本组成.美国的经验表明,长期的生产力强劲增长表现为伴随组织结构和企业资金安排变化的技术革新,以及人力资本的投入.但是,支撑这些生产力增长的决定因素的是一个更基本的因素:社会对其自身进行重大转变的意志,以及对技术进步和随那个进步而来的经济机会将使人们改善其生活的信心. –Roger W. Ferguson Jr.和William L. Wascher,美国经济学会在政府中做的经济专题演讲:过去生产力大爆炸的教训,<

IOS7新功能如何使用

1.全新设计的界面 iOS7是iOS面世以来在用户界面上做出改变最大的一个操作系统.iOS7抛弃了以往的拟物化设计,而采用了扁平化设计. 苹果在重新思考 iOS 的设计时,更希望围绕 iOS 中深受人们喜爱的元素,打造一种更加简单实用而又妙趣横生的用户体验.最终,苹果优化了 iOS 的工作方式,并以此为基础重新设计了 iOS 的外观.之所以这样做,是因为能够服务于体验的设计才是出色的设计.[3-4] 2.控制中心 控制中心为你建立起快速通路,便于你使用那些随时急需的控制选项和 app.只需从任意

如何学习一个新的PHP框架

如今的PHP框架层出不穷,我不是这方面的专家,甚至不能熟练地使用其中的一种,所以我不做推荐,也不想讨论哪些算是框架哪些不算框架.这里我要讨论的是如何才能更快地开始使用某个新的框架. 首先你当然必须选择一个框架,比如ZendFramework.Cake.Symfony.atk.Yii.CodeIgniter.Solar.PRADO等.选择哪个呢?有些框架提供了非常好"step-by-step"入门教程,另一些则比较难入门了. 我很喜欢这篇文章:<学习一种新的编程语言所需做的练习&g

强大的PyTorch:10分钟让你了解深度学习领域新流行的框架

更多深度文章,请关注:https://yq.aliyun.com/cloud PyTorch由于使用了强大的GPU加速的Tensor计算(类似numpy)和基于tape的autograd系统的深度神经网络.这使得今年一月份被开源的PyTorch成为了深度学习领域新流行框架,许多新的论文在发表过程中都加入了大多数人不理解的PyTorch代码.这篇文章我们就来讲述一下我对PyTorch代码的理解,希望能帮助你阅读PyTorch代码.整个过程是基于贾斯汀·约翰逊的伟大教程.如果你想了解更多或者有超过1

facebook 开发新移动测试框架 Airlock

Facebook 10日宣布开发出了一种新的移动端的A/B测试框架Airlock.在公司的工程博客上,Facebook工程师艾利-格兰特(Ari Grant)和张康(Kang Zhang音译)今表示解释称,Facebook于两年前开始转向原生的开发堆栈,这使得工程师们能够更好地在多层面控制移动开发,但同时也意味着A/B 测试能力的丧失. Facebook 10日宣布开发出了一种新的移动端的A/B测试框架Airlock.在公司的工程博客上,Facebook工程师艾利-格兰特(Ari Grant)和