// 假定有实例对象—Person,我们如何知道该实例对象是否存在属性—name?
// 利用runtime,我们可以获取到它的属性列表
// 1)属性列表
unsigned int outCount, i;
// 获取对象里的属性列表
objc_property_t * properties = class_copyPropertyList([Person class], &outCount);
// 2)验证propertyName是否在属性列表中
// 通过遍历属性列表,如:
BOOL isExist = NO;
for (i = 0; i < outCount; i++) {
objc_property_t property =properties[i];
// 属性名转成字符串
NSString *tempPropertyName = [[NSString alloc] initWithCString:property_getName(property) encoding:NSUTF8StringEncoding];
// 判断该属性是否存在
if ([tempPropertyName isEqualToString:propertyName]) {
free(properties);
isExist = YES;
}
}