Я думал, что знаю, как использовать быстрое перечисление, но есть кое-что, чего я не понимаю в этом.Если я создаю три NSString
объекта и три 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
Я зарегистрировал только NSString
s, но я получаю строку для каждого объекта в массиве, даже NSNumber
и я не понимаю почему.Всегда ли быстрое перечисление использует каждый объект, содержащийся в массиве?