2011-02-10 121 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)