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

时间:2009-09-03 13:45:29

标签: javascript objective-c webkit

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

- (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 ]

1 个答案:

答案 0 :(得分:1)

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

您是否看到了其他症状?

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