javascript - 从 JavaScript 访问任意 Objective-C 对象的方法和属性

标签 javascript objective-c webkit

我想要访问 Objective-C 对象的属性并调用该对象的方法,该对象作为公开对象的属性返回到 JavaScript 主机 ([windowScriptObject setValue:self forKey:@"a"]):

- (id) valueForUndefinedKey:(NSString*) key {
  if ( [key isEqualToString:@"b"] ) {
    MyObject* obj = [ [ MyObject alloc ] init ];
    return obj;
  }
  return Nil;
}

在 Javascript 中我希望能够执行以下操作:

// a is already exposed Objective-C object
var b = a.b; // reference to myObject
var c = a.b.c; // myObject.c
var d = a.b.d(); // [ myObject d ]

最佳答案

MyObject 需要实现 +isSelectorExcludedFromWebScript: 和/或 +isKeyExcludedFromWebScript:。默认情况下,Javascript 不允许访问 Objective-C 方法;您必须明确允许。

除此之外,您还发现其他症状吗?

有关详细信息,请参阅Using Objective-C From Javascript .

关于javascript - 从 JavaScript 访问任意 Objective-C 对象的方法和属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1373496/

相关文章:

javascript - 分离客户端和服务器代码的文件夹后的发布/订阅

ios - 在 View 中将 Stripe PaymentKit 信用卡文本字段居中

javascript - 检测当前是否在 Android 上滚动网页

ios - HTML 5 缓存 list 不再在 Chrome 的 IO 中工作

html - 带有内部媒体查询的 <link> 标签的验证问题

javascript - 如何使用 jquery 获取 Laravel 中下拉菜单单击中 li 的值?

javascript - SonarQube 始终显示 Javascript 项目的 0.0% 代码覆盖率

javascript - nextAll().remove() 不适用于 jquery 中的动态添加元素

ios - UIView animateKeyFramesWithDuration 没有在正确的时间开始

iphone - 在 iphone 中加载默认图像后如何在启动画面上播放视频?