2

是否可以在objective-c中获取特定类的所有后代类的列表?

就像是:

  @interface A : NSObject
  @end

  @interface B : A
  @end

  @interface C : A
  @end

  NSArray *descendants = [A allDescendants];  // descendants = [B, C]
4

3 回答 3

5

我能想到的唯一方法是枚举运行时中的整个类列表(使用 获得objc_getClassList)并测试每个类的isKindOfClass:A.

这可能是唯一的解决方案,因为类不维护与其后代的链接(仅与其超类)。

于 2008-12-14T22:29:09.420 回答
1

例如,我将 Ken Ferry 的解决方案链接到Wil Shipley博客文章

本质上,走路上课。

于 2008-12-15T10:29:26.080 回答
0

你能以某种方式使用班级成员吗?调用返回self 的超类的类[[A class] superclass]的实例。Class我认为你可以从中获得一个类的名称Class- 这会做你想要的吗?

这根本不能真正处理协议,但也许这至少会为您指明正确的方向。

于 2008-12-15T00:03:15.127 回答