Objective C - 循环遍历NSArray,其中所有对象都继承自相同的协议

Kla*_*. S 0 types protocols objective-c for-in-loop

我有一个NSArray,其中所有对象都从相同的协议继承方法.我想做的是:

NSArray* arr =  [NSArray arrayWithObjects:[Type_1 init],[Type_2 init], nil];

for(Protocol *element in arr)
{
  [element do_this];
}
Run Code Online (Sandbox Code Playgroud)

arr是具有对象Type_1和Type_2的数组,它们都从名为Protocol的协议继承.

问题是协议不能用作for循环中的类型.我该如何解决这个问题?

Wai*_*ain 6

使用:

for(id < Protocol > element in arr)
Run Code Online (Sandbox Code Playgroud)

指定对象是泛型类型并实现协议.

或者,您可以"欺骗"一点并使用:

[arr makeObjectsPerformSelector:@selector(do_this)];
Run Code Online (Sandbox Code Playgroud)

(不提供任何种类的检查).