菜鸟教程小白 发表于 2022-12-12 15:46:19

javascript - 如何在 Obj-C 中定义带有回调的 Javascript 函数?


                                            <p><p>我正在使用 JavaScriptCore 来评估我的应用程序中的一些简单脚本。我正在创建一个全局对象并在其上定义一些属性,如下所示:</p>

<pre><code>JSContext *context = [ init];
JSValue *globalObject = ;

;
...
</code></pre>

<p>所以脚本可以访问 <code>fields</code> 中的值等等。我希望脚本能够使用名为 <code>lookup</code> 的函数,并且我已经为该函数提供了 Objective-C 实现。</p>

<p>如何向全局对象添加一个属性,该对象是一个回调我的 Objective-C 方法的函数?我看到有一个名为 <code>JSObjectMakeFunctionWithCallback</code> 的函数,但它使用了像 <code>JSObjectRef</code>s 这样的低级 C 构造,并采用 C 函数,而不是 Objective-Cblock ,所以我无法在实现中使用 <code>self</code>。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您可以将 Objective-Cblock 传递给 JSContext,然后它将表现为函数。这样,您的脚本就可以回调您的 iOS 代码:</p>

<pre><code>context[@&#34;factorial&#34;] = ^(int x) {
    int factorial = 1;
    for (; x &gt; 1; x--) {
      factorial *= x;
    }
    return factorial;
};
;
JSValue *fiveFactorial = context[@&#34;fiveFactorial&#34;];
NSLog(@&#34;5! = %@&#34;, fiveFactorial);
</code></pre>

<p>来源:<a href="http://blog.bignerdranch.com/3784-javascriptcore-and-ios-7/" rel="noreferrer noopener nofollow">Bignerdranch</a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于javascript - 如何在 Obj-C 中定义带有回调的 Javascript 函数?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/19495973/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/19495973/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: javascript - 如何在 Obj-C 中定义带有回调的 Javascript 函数?