objective-c遍历子类类型数组并调用类方法

时间:2012-08-10 10:27:49

标签: iphone objective-c ios

假设我有一个带有类方法的基类:

  

@interface base:NSObject

     

+(id)的方法;

     

@end

我有10个派生类:从derived1到derived10,每个都覆盖方法:

@interface derived1 : base 
@end

现在问题就出现了,我有一个像这样的数组:

  

NSArray * array = [NSArray arrayWithObjects:[derived1 class],[derived2   class] ....... [derived10 class]];

现在我想遍历这个数组并调用每个元素的方法,如何?

PS:我需要在foreach循环中逐个执行该方法。

3 个答案:

答案 0 :(得分:2)

  1. 像往常一样迭代
  2. 获取对象的类
  3. 上调用方法
    for (id object in objects) {
        [[object class] method];
    }
    
  4. 修改

    以上是如果你有具体的实例(@Alladinian :)欢呼)否则如果你的示例代码是文字的,你实际上把类放在数组中你只需要使用

    for (id object in objects) {
       [object method];
    }
    

答案 1 :(得分:1)

鉴于您有一个类似于您发布的数组的数组:

NSArray *array = [NSArray arrayWithObjects:[derived1 class],[derived2 class]..[derived10 class]];

[array makeObjectsPerformSelector:@selector(method)];

修改 OP编辑了这个问题并说他需要逐个迭代并执行。那么请选择保罗的答案,这真的是你需要的:)

答案 2 :(得分:0)

查找NSArray方法。 makeObjectsPerformSelector或makeObjectsPerformSelector:withObject:或enumerateObjectsUsingBlock:或enumerateObjectsWithOptions:usingBlock:all do that that。另外,你可以简单地用for迭代并在每个对象上调用方法。