返回Objective-C中对象的所有属性

时间:2010-03-09 15:18:59

标签: iphone objective-c

是否可以返回Objective-C中对象实现的所有属性的列表? 我知道属性只是getter和setter所以我不确定它是如何工作的。如果无法做到这一点,那么是否可以返回对象将响应的所有选择器?我正在寻找类似于Ruby中“methods”方法的东西。

2 个答案:

答案 0 :(得分:19)

// 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);

答案 1 :(得分:1)

我昨天实际上是在尝试这个,但是有可能,但是你无法从UIView获得所有东西。  看看Objective-C Runtime Reference