以编程方式获取父类的子级

时间:2012-09-03 13:34:48

标签: objective-c ios

我有一个允许用户选择一种childObject的界面。这些对象都继承自同一个parentObject。有没有办法在给定parentObject的情况下动态生成这个childObjects列表?目前,当我创建一个新孩子时,我必须将其添加到TVC的孩子列表中进行显示。

编辑: 这是一个例子:

Class A (child of NSObject)
->Class A1 (child of Class A)
->Class A2 (child of Class A)

我想问A级:“你的孩子是什么?”

1 个答案:

答案 0 :(得分:2)

您可以使用反射:

// find out the superclass of a class or object
Class parent = [[theObject class] superclass];

// get all classes loaded
unsigned n_classes = objc_getClassList(NULL, 0);
Class *classes;
classes = malloc(sizeof(*classes) * n_classes);
objc_getClassList(classes, n_classes);

// Filter the classes so that only child classes of the
// particular parent class are present
NSMutableArray *children = [NSMutableArray array];
int i;
for (i = 0; i < n_classes; i++) {
    if ([classes[i] isKindOfClass:parent]) {
        [children addObject:classes[i]]; // Yes, classes temselves are objects
    }
}

free(classes);

这里&#39;孩子&#39;将包含parent的descandants。