美文网首页iOS学习笔记
OC与JS的相互调用

OC与JS的相互调用

作者: BWLi420 | 来源:发表于2018-08-16 15:38 被阅读54次

    JS 和 OC 的简单相互调用,基于纯 JS 文件,不使用 webView

    • 这里仅列出测试代码,详情请移步 demo
    + (void)gg {
        
        //加载 js
        JSContext *context = [[JSContext alloc] init];
        [context evaluateScript:[self getJsStr]];
        
        /** -------- OC 调用 JS 的方法 ------- */
        
        // test1
        JSValue *value1 = context[@"test1"];
        NSLog(@"%@", [value1 toString]);
        
        // test2
        JSValue *test2 = context[@"test2"];
        //这里执行 test2 模块内部的 version 方法,因为无参数,所以传 nil
        JSValue *value2 = [test2[@"version"] callWithArguments:nil];
        NSLog(@"%d", [value2 toInt32]);
        
        // Function1
        JSValue *value3 = [context[@"Function1"] callWithArguments:nil];
        NSLog(@"Function1 - %@", [value3 toString]);
        
        // Function2
        //参数是一个数组,按顺序传入
        JSValue *value4 = [context[@"Function2"] callWithArguments:@[@"This is Function2"]];
        NSLog(@"Function2 - %@", [value4 toString]);
        
        // Function3
        JSValue *value5 = [context[@"Function3"] callWithArguments:@[@10, @20]];
        NSLog(@"Function3 - %@", [value5 toString]);
        
        /** -------- JS 调用 OC 的方法 ------- */
        
        // test3
        JSObject *object = [[JSObject alloc] init];
        context[@"test3"] = object;
        
        // Function4
        JSValue *value6 = [context[@"Function4"] callWithArguments:@[@"This is Function4"]];
        NSLog(@"Function4 - %@", [value6 toString]);
        
        // Function5
        JSValue *value7 = [context[@"Function5"] callWithArguments:@[@"This is", @"Function5 !!!"]];
        NSLog(@"Function5 - %@", [value7 toString]);
    }
    
    • 这里是运行结果
    结果

    相关文章

      网友评论

        本文标题:OC与JS的相互调用

        本文链接:https://www.haomeiwen.com/subject/lpkobftx.html