是否可以在objective-c中获取特定类的所有后代类的列表?
类似的东西:
@interface A : NSObject
@end
@interface B : A
@end
@interface C : A
@end
NSArray *descendants = [A allDescendants]; // descendants = [B, C]
答案 0 :(得分:5)
我能想到的唯一方法是枚举运行时中的整个类列表(使用objc_getClassList
获得)并对每个类isKindOfClass:A
进行测试。
这可能是唯一的解决方案,因为类不保持与其后代的链接(仅限于其超类)。
答案 1 :(得分:1)
例如,我将solution的Ken Ferry链接到Wil Shipley博文。
基本上,走在课堂上。
答案 2 :(得分:0)
你能以某种方式使用班级成员吗?调用[[A class] superclass]
为self的超类返回Class
类的实例。我认为你可以从Class
得到一个类的名称 - 那会做你想要的吗?
这根本不能真正处理协议,但这可能至少会指向正确的方向。