QuickJS-iOS 0.0.4

QuickJS-iOS 0.0.4

Sam Chang 维护。



  • Sam Chang

QuickJS-iOS

项目状态

非用于生产。

安装 XCodeGen

如果已经安装了 xcodegen,可以忽略此步骤。

$ brew install xcodegen

设置项目

$ cd project-dir
$ xcodegen

打开项目,将目标设置为模拟器,然后按 Command+U 运行测试。

将你的项目与 Cocoapods 集成

  1. 添加 pod 依赖 pod 'QuickJS-iOS'
  2. 添加头文件导入 #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

从js调用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