如果我有财产
@property (nonatomic, retain) NSArray* myArray;
我可以吗?如果是的话,为什么这样做呢?
for (id object in self.myArray)
;
或者我需要做什么?
NSArray* r = self.myArray;
for (id object in r)
;
答案 0 :(得分:2)
它的工作原理是因为self.myArray是[self myArray]的语法糖,它由@synthesize关键字生成。所以你真的在做:
for (id object in [self myArray])
[self myArray]的返回值实现了快速枚举协议,因此for..in语法可以对它起作用。
这会让事情更清楚吗?
答案 1 :(得分:1)
是的,你可以像这样使用快速枚举。要回答您的评论中的问题,我相信如果您在枚举期间修改数组属性,快速枚举协议将抛出异常。
http://www.mikeash.com/pyblog/friday-qa-2010-04-16-implementing-fast-enumeration.html
答案 2 :(得分:0)
你绝对可以选择for(id object in self.array)