2015-03-30 41 views
0

我有一個NSArray,其中所有對象都從同一協議繼承方法。我想要做的是一樣的東西:Objective C - 循環遍歷所有對象從相同協議繼承的NSArray

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

for(Protocol *element in arr) 
{ 
    [element do_this]; 
} 

ARR與對象TYPE_1和TYPE_2這無論從命名協議協議繼承陣列。

問題是協議不能用作for循環中的類型。我該如何解決這個問題?

回答

4

用途:

for(id <Protocol> element in arr) 

指定的對象是通用型的,並且實現協議。

或者,你可以 '欺騙' 了一點,使用:

[arr makeObjectsPerformSelector:@selector(do_this)]; 

(不提供任何形式的檢查)。