高速列挙の使い方は知っていると思いましたが、わからないことがあります。NSString
3つのオブジェクトと3つのオブジェクトを作成NSNumber
し、それらをNSMutableArray
:に配置するとします。
NSString *str1 = @"str1";
NSString *str2 = @"str2";
NSString *str3 = @"str3";
NSNumber *nb1 = [NSNumber numberWithInt:1];
NSNumber *nb2 = [NSNumber numberWithInt:2];
NSNumber *nb3 = [NSNumber numberWithInt:3];
NSArray *array = [[NSArray alloc] initWithObjects:str1, str2, str3, nb1, nb2, nb3, nil];
NSString
次に、次のように、すべてのオブジェクトで高速列挙を実行します。
for (NSString *str in array) {
NSLog(@"str : %@", str);
}
コンソールでは、次の結果が得られます:
2011-08-02 13:53:12.873 FastEnumeration[14172:b603] str : str1
2011-08-02 13:53:12.874 FastEnumeration[14172:b603] str : str2
2011-08-02 13:53:12.875 FastEnumeration[14172:b603] str : str3
2011-08-02 13:53:12.875 FastEnumeration[14172:b603] str : 1
2011-08-02 13:53:12.876 FastEnumeration[14172:b603] str : 2
2011-08-02 13:53:12.876 FastEnumeration[14172:b603] str : 3
sのみをログに記録NSString
しましたが、配列内のすべてのオブジェクトの行を取得します。sも含めて、NSNumber
理由がわかりません。高速列挙は常に配列に含まれるすべてのオブジェクトを使用しますか?