利用runtime检測这个对象是否存在某属性?
假定有实例对象—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;
}
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步