Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f5670b2

Browse files
author
zhangyanqiang
committed
修改readme
1 parent 03634d5 commit f5670b2

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

‎README.md

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
JavaScriptCore 是 JavaScript 引擎,通常会被叫做虚拟机,专门设计来解释和执行 JavaScript 代码,可以理解为一个浏览器的运行内核。
66

7-
JavaScriptCore Framework 是 iOS7 引入的新功能,其实就是基于 Webkit 中以 C/C++ 实现的 JavaScriptCore 的一个封装,大多数 iOS 比较熟悉的是它的 Objective-C API,可以用简介的方式 JS 与Native 通讯,其实它还有C API的部分,虽然也是开源的,但是在查看源代码时只有较少的介绍,而且我们知道 Objective-C API 只是 C API 接口的封装。本文主要介绍 C API 部分,帮助大家更好理解 JavaScriptCore Framework。
7+
JavaScriptCore Framework 是 iOS7 引入的新功能,其实就是基于 Webkit 中以 C/C++ 实现的 JavaScriptCore 的一个封装,大多数 iOS 比较熟悉的是它的 Objective-C API,可以用简洁的方式实现 JS 与Native 交互,其实它还有C API的部分,虽然也是开源的,但是在查看源代码时只有较少的介绍,而且我们知道 Objective-C API 只是 C API 接口的封装。本文主要介绍 C API 部分,帮助大家更好理解 JavaScriptCore Framework。
88

99
## JavaScriptCore C API
1010

@@ -20,7 +20,7 @@ JavaScriptCore C API 部分包含六个类 下面我们详细解释每个类的
2020

2121
- ##### JSObjectRef.h
2222

23-
JSObjectRef 相当于 Objective-C 中的 JSObject,它代表一个JavaScript对象,交互的核心放在都在这个类中实现
23+
JSObjectRef 相当于 Objective-C 中的 JSObject,它代表一个JavaScript对象,交互的核心都在这个类中实现
2424

2525
- ##### JSStringRef.h
2626

@@ -247,23 +247,33 @@ JSObjectRef ObjectCallAsConstructor(JSContextRef ctx, JSObjectRef constructor, s
247247
JSGlobalContextRef globalContext = JSGlobalContextCreateInGroup(contextGroup, nil);
248248
JSObjectRef globalObject = JSContextGetGlobalObject(globalContext);
249249
250-
JSClassDefinition constructorClassDef = kJSClassDefinitionEmpty;
250+
JSClassDefinition constructorClassDef = kJSClassDefinitionEmpty;
251251
constructorClassDef.getProperty = ObjectGetPropertyCallback;
252252
constructorClassDef.callAsFunction = ObjectCallAsFunctionCallback;
253253
constructorClassDef.callAsConstructor = ObjectCallAsConstructor;
254254
constructorClassDef.hasInstance = ObjectConstructorHasInstance;
255255
constructorClassDef.finalize = ObjectConstructorFinalize;
256-
256+
257257
JSClassRef loaderClass = JSClassCreate(&constructorClassDef);
258258
259-
JSObjectRef loader = JSObjectMake(globalContext, loaderClass, (__bridge void *)(self.view));
259+
JSObjectRef globalObject = JSContextGetGlobalObject(globalContext);
260+
260261
JSStringRef logFunctionName = JSStringCreateWithUTF8CString("log");
261-
JSObjectSetProperty(globalContext, globalObject, logFunctionName, loader, kJSPropertyAttributeNone, nil);
262+
JSObjectRef functionObject = JSObjectMakeFunctionWithCallback(globalContext, logFunctionName, &ObjectCallAsFunctionCallback);
263+
262264
263-
JSStringRef logCallStatement = JSStringCreateWithUTF8CString("log()");
265+
JSObjectSetProperty(globalContext, globalObject, logFunctionName, functionObject, kJSPropertyAttributeNone, nil);
264266
267+
JSStringRef logCallStatement = JSStringCreateWithUTF8CString("log()");
265268
JSEvaluateScript(globalContext, logCallStatement, nil, nil, 1,nil);
266269
270+
271+
JSObjectRef loader = JSObjectMake(globalContext, loaderClass, (__bridge void *)(self.view));
272+
JSStringRef myclass = JSStringCreateWithUTF8CString("myclass");
273+
JSObjectSetProperty(globalContext, globalObject, myclass, loader, kJSPropertyAttributeNone, nil);
274+
275+
JSStringRef callMyclass = JSStringCreateWithUTF8CString("myclass.start()");
276+
JSEvaluateScript(globalContext, callMyclass, nil, nil, 1,nil);
267277
/* memory management code to prevent memory leaks */
268278
269279
JSGlobalContextRelease(globalContext);

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /