2011-02-10 75 views
0

,如果我有一個屬性我可以直接通過屬性進行快速枚舉嗎?

@property (nonatomic, retain) NSArray* myArray; 

我能做什麼?如果是的話,爲什麼這個工作?

for (id object in self.myArray) 
    ; 

或者我需要做什麼?

NSArray* r = self.myArray; 
for (id object in r) 
    ; 
+2

你試過了嗎?你可以在20秒左右找到答案。 – 2011-02-10 15:05:49

+0

其實我更感興趣的是它的工作原理。它是一個編譯器優化?現在循環如何,self.myArray總是一樣的? – CodeFlakes 2011-02-10 15:19:41

回答

2

它的工作原理是因爲self.myArray爲[自myArray的],其由@synthesize關鍵字生成語法糖。所以,真的是你正在做的:

for (id object in [self myArray]) 

而[自myArray的]的返回值實現快速列舉協議使的for..in語法上進行工作。

這是否使事情更清晰?

0

你絕對可以去for(id object in self.array)