代码之家  ›  专栏  ›  技术社区  ›  Joe Cannatti

返回objective-c中对象的所有属性

  •  10
  • Joe Cannatti  · 技术社区  · 14 年前

    是否可以返回objective-c中一个对象实现的所有属性的列表? 我知道属性只是getter和setter,所以我不确定它是如何工作的。如果无法完成此操作,是否可以返回对象将响应的所有选择器?我正在寻找与ruby中的“methods”方法类似的东西。

    2 回复  |  直到 14 年前
        1
  •  19
  •   Vladimir    14 年前
    // Get properties list    
    objc_property_t* class_copyPropertyList(Class cls, unsigned int *outCount); 
    // Get methods list
    Method* class_copyMethodList(Class cls, unsigned int *outCount); 
    

    下面的代码将把uiimage类中实现的所有方法输出到控制台:

    unsigned int count;
    Method* methods = class_copyMethodList([UIImage class], &count);
    for (size_t i = 0; i < count; ++i)
       NSLog([NSString stringWithCString:sel_getName(method_getName(methods[i]))]);
    free(methods);
    
        2
  •  1
  •   Tuomas Pelkonen    14 年前

    我昨天真的试过了,这是可能的,但是你不能从uiview得到所有的东西。 看看 Objective-C Runtime Reference