代码之家  ›  专栏  ›  技术社区  ›  Dmitry Mukhin

javascript中任意objective-c对象的访问方法及属性

  •  1
  • Dmitry Mukhin  · 技术社区  · 16 年前

    我想访问返回到JavaScript主机的ObjuleC对象的属性和调用方法,作为被暴露对象的属性( [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 ]
    
    1 回复  |  直到 16 年前
        1
  •  1
  •   Rob Napier    16 年前

    MyObject 需要实施 +isSelectorExcludedFromWebScript: 和/或 +isKeyExcludedFromWebScript: . 默认情况下,不允许javascript访问objective-c方法;您必须显式地允许它。

    除此之外,你还有其他症状吗?

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