定义
objc_property_t
属性类型,指向objc_property
结构体
typedef struct objc_property *objc_property_t;
通过class_copyPropertyList
和protocol_copyPropertyList
方法获取类和协议的属性
objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount)
objc_property_t *protocol_copyPropertyList(Protocol *proto, unsigned int *outCount)
示例
1、声明
@interface Lender : NSObject {
float alone;
}
@property float alone;
@end
2、获取属性列表
id LenderClass = objc_getClass("Lender");
unsigned int outCount;
objc_property_t *properties = class_copyPropertyList(LenderClass, &outCount);
3、查找属性名称
const char *property_getName(objc_property_t property)
4、通过给出的名称来在类和协议中获取属性的引用
objc_property_t class_getProperty(Class cls, const char *name)
objc_property_t protocol_getProperty(Protocol *proto, const char *name, BOOL isRequiredProperty, BOOL isInstanceProperty)
5、发掘属性名称和@encode类型字符串
const char *property_getAttributes(objc_property_t property)
6、从一个类中获取它的属性
id LenderClass = objc_getClass("Lender");
unsigned int outCount, i;
objc_property_t *properties = class_copyPropertyList(LenderClass, &outCount);
for (i = 0; i < outCount; i++) {
objc_property_t property = properties[i];
fprintf(stdout, "%s %sn", property_getName(property), property_getAttributes(property));
}