假定有实例对象—instance,我们如何知道该实例对象是否存在属性—propertyName?
利用runtime,我们可以获取到它的属性列表
1)属性列表
unsigned int outCount, i;
// 获取对象里的属性列表
objc_property_t * properties = class_copyPropertyList([instance 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;
}
}