是否可以调用 Objective-C 函数 returns 一个值 javascript?

Is it possible to call an Objective-C function that returns a value to javascript?

我想在 iOS Objective-C webview 应用程序中使用 JavaScriptCore / JSContext 来 return javascript 函数的值。

例如,在javascript中:var retVal = myObjC.returnSomething();

其中 returnSomething 是 Objective-C 函数。为了便于讨论,我们假设它 return 是 javascript 函数的一个字符串。

我已经能够调用 Objective-C 没有 return 值的函数,但是没能找到描述如何 return 值的任何内容.

使用 JavaScriptCore 甚至可以做到这一点,还是我采取了错误的方法?我需要 javascript 来等待 return 值(同步)。

如您所料,将数据从 obj C 传递到 JS 使用 stringByEvaluatingJavaScriptFromString/将数据从 JS 传递到 Obj C 使用 JSContext

<!-- save as .html and load into UIWebview -->

    <!DOCTYPE html>
    <html>
    <head>
    <script>
    function loadData(x){
    alert(x);
    }    
    function myMeg(){   
    passDatatoObjC("success");    
    }
    </script>
    </head>
    </html>

    function returnSomething(x){
    loadData(x);
    }

    function passDatatoObjC(x){
    passDatatoObjC(x);    
    }

    #pragma mark - UIWebview dataource

    -(void)webViewDidFinishLoad:(UIWebView *)webView{

      [self.svgWebMapView   stringByEvaluatingJavaScriptFromString:@"returnSomething(10)"];

      JSContext *context =  [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    context[@"passDatatoObjC"] = ^(NSString *msg) {
    NSLog(@"%@",msg);

    });
    }