QuickJS-iOS
项目状态
非生产使用。
安装 XCodeGen
如果已经安装了 xcodegen
,则可以忽略此步骤。
$ brew install xcodegen
设置项目
$ cd project-dir
$ xcodegen
打开项目,选择模拟器作为目标,然后按 Command+U 运行测试。
将您的项目与 Cocoapods 集成
- 添加 pod 依赖
pod 'QuickJS_iOS'
- 添加头文件导入
#import <QuickJS_iOS/QuickJS_iOS.h>
示例
注入到 JavaScript 的对象
@interface TestObject : NSObject
@end
@implementation TestObject
- (NSArray *)test:(NSNumber *)a :(NSString *)b :(NSNumber *)c {
NSLog(@"%@ %@ %@", a, b, c);
return @[@"a", @NO, @(123)];
}
@end
从 JavaScript 调用 ObjectiveC API 的示例
// prepare runtime & context
QJSRuntime *runtime = [[QJSRuntime alloc] init];
QJSContext *context = [runtime newContext];
// get global object
QJSValue *globalValue = [context getGlobalValue];
// set global variable
[globalValue setObject:[TestObject new] forKey:@"testval"];
// invoke objc instance api from javascript
[context eval:@"testval.test(1, 'a', false);"]
在 ObjectiveC 中调用 JavaScript 函数的示例
@protocol TestProtocol<NSObject>
- (id)javascriptAddFunc:(id)arg1 :(id)arg2
@end
QJSRuntime *runtime = [[QJSRuntime alloc] init];
QJSContext *context = [runtime newContext];
QJSValue *destObject = [context eval:@"var a = {javascriptAddFunc: function(a, b){return a * 10 + b;}}; a;"];
id<TestProtocol> obj = [destObject asProtocol:@protocol(TestProtocol)];
id retValue = [obj javascriptAddFunc:@(1):@(2)];
您可以在文件 QuickJS_iOSTest.m 中找到更多示例