2011-02-10 6 views
0

私は財産プロパティを使用して直接列挙を行うことはできますか?

@property (nonatomic, retain) NSArray* myArray; 

を持っている場合、私は何ができますか?そしてもしそうなら、これはなぜ機能しますか?

for (id object in self.myArray) 
    ; 

または実行する必要がありますか?

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

試しましたか?答えは約20秒で見つかりました。 –

+0

実際に私はそれがなぜ機能するかにもっと興味があります。それはコンパイラの最適化ですか?どのようにしてself.myArrayは常に同じループになりますか? – CodeFlakes

答えて

2

self.myArrayは@synthesizeキーワードによって生成された[自己MyArrayという]、のための構文糖であるので、それは動作します。

for (id object in [self myArray]) 

をそしてこのfor..in構文はそれに取り組むことができるように[自己MyArrayという]の戻り値は、高速列挙プロトコルを実装していますので、本当にあなたがやっています。

これは物事をより明確にしますか?

+0

標準の読み取り/書き込み可能なプロパティには、@synthesize:myArrayとsetMyArrayによって生成される2つの関数があることを追加します。また、この情報はhttp://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProperties.htmlにあります。 – Cthutu

0

あなたは間違いなくはい、あなたがそのように高速列挙体を使用することができますfor(id object in self.array)

関連する問題