【发布时间】:2015-09-11 11:09:09
【问题描述】:
我使用它来获取属性名称的类:
- (Class)gm_classForPropertyName:(NSString *)propertyName {
objc_property_t prop = class_getProperty([self class], propertyName.UTF8String);
const char * attr = property_getAttributes(prop);
NSString *attributes = [NSString stringWithUTF8String:attr];
NSArray *components = [attributes componentsSeparatedByString:@"\""];
Class propertyClass;
for (NSString *component in components) {
Class class = NSClassFromString(component);
if (class) {
propertyClass = class;
break;
} else {
class = swiftClassMapping[component];
if (class) {
propertyClass = class;
break;
}
}
}
return propertyClass;
}
但这是重要的部分:
objc_property_t prop = class_getProperty([self class], propertyName.UTF8String);
const char * attr = property_getAttributes(prop);
NSString *attributes = [NSString stringWithUTF8String:attr];
当我登录attributes 时,它仍然看起来像一个无类型的 NSArray 作为字符串。有什么方法可以自省类类型吗?
T@"NSArray",&,N,V_children
tl;博士
参加这门课:
@interface SomeClass : NSObject <GenomeObject>
@property (strong, nonatomic) NSArray<SomeOtherClass *> *children;
@end
鉴于类 SomeClass 和属性名称 children,我有没有办法找到 children 是 SomeOtherClass 类型对象的数组?
【问题讨论】:
标签: ios objective-c generics introspection objective-c-runtime