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



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

@interface基 : NSObject

+(id)方法;

@end

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

@interface derived1 : base 
@end

现在这就是问题所在,我有一个这样的数组:

NSArray *array = [NSArray arrayWithObjects:[derived1 class],[derived2 类]。[派生10类]];

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

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

  1. 像往常一样迭代
  2. 获取对象的类
  3. 调用该方法

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

编辑

以上是如果您有具体实例(@Alladinian :)干杯)否则,如果您的示例代码是文字代码,并且您实际上将类放在您刚刚使用的数组中

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

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

NSArray *array = [NSArray arrayWithObjects:[derived1 class],[derived2 class]..[derived10 class]];
[array makeObjectsPerformSelector:@selector(method)];

编辑:OP编辑了这个问题,并说他需要逐一迭代和执行。所以按照保罗的回答,这真的是你需要的:)

查找 NSArray 方法。 makeObjectsPerformSelector or

或 makeObjectsPerformSelector:withObject: or enumerateObjectsUsingBlock: or enumerateObjectsWithOptions:usingBlock: 都这样做。另外,您可以简单地使用 for 进行迭代,并在每个对象上调用该方法。

最新更新