在OC每个类中,我们通常会根据自己的需要,添加自己需要的属性,对于我们不熟知的类和协议,我们可以通过class_copyPropertyList和protocol_copyPropertyList得到一个包含一个类所有属性的数组
objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount)
objc_property_t *protocol_copyPropertyList(Protocol *proto, unsigned int *outCount)
举个例子
@interface lender : NSObject
@property (nonatomic, strong)NSArray *nameArray;
@property (nonatomic, strong)NSString *name;
@property(nonatomic,assign) NSInteger age;
@end
id lenderClass=objc_getClass("lender");// 获取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 %s\n", property_getName(property), property_getAttributes(property));//标准化输出,stdout 是一个系统的宏定义
}
运行结果
nameArray T@"NSArray",&,N,V_nameArray
name T@"NSString",&,N,V_name
age Tq,N,V_age
网友评论