• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-12 15:46:19 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

JSContext *context = [[JSContext alloc] init];
JSValue *globalObject = [context globalObject];

[globalObject setValue:fields forProperty"fields"];
...

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

如何向全局对象添加一个属性,该对象是一个回调我的 Objective-C 方法的函数?我看到有一个名为 JSObjectMakeFunctionWithCallback 的函数,但它使用了像 JSObjectRefs 这样的低级 C 构造,并采用 C 函数,而不是 Objective-C block ,所以我无法在实现中使用 self



Best Answer-推荐答案


您可以将 Objective-C block 传递给 JSContext,然后它将表现为函数。这样,您的脚本就可以回调您的 iOS 代码:

context[@"factorial"] = ^(int x) {
    int factorial = 1;
    for (; x > 1; x--) {
        factorial *= x;
    }
    return factorial;
};
[context evaluateScript"var fiveFactorial = factorial(5);"];
JSValue *fiveFactorial = context[@"fiveFactorial"];
NSLog(@"5! = %@", fiveFactorial);

来源:Bignerdranch

关于javascript - 如何在 Obj-C 中定义带有回调的 Javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19495973/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap