Учитывая массивБудет ли для в цикле самоанализом содержимое массива
NSArray *myArray = @[@"hello", @5, @[@6, @7, @8]];
for (NSNumber *myNumber in myArray)
{
NSLog (@"%@", myNumber);
}
ли выход из сообщения журнала будет 5 или 5 6 7 8 т. Включает ли цикл for/in объекты верхнего уровня в словаре/массиве или глубоко проверять вложенные наборы, массивы, словари и т. Д.?
Редактировать
Я понимаю, что я везу много тепла на этот вопрос, поэтому позвольте мне уточнить, что я получал в. Да, все в порядке, для быстрого перечисления не выполняется самоанализ, но почему бы и нет? Если я специально обозначаю тип, например NSNumber или NSString, почему цикл for in не выполняет метод kindOfClass с типом, который вы указали, а не каким-то другим объектом? В приведенном выше примере не интуитивно понятно, что я бы выполнял только повторение NSNumbers в массиве?
Я подозреваю, что ответ выполняет интроспекцию по каждому элементу в массиве, может отрицать улучшения производительности быстрого перечисления? Но разве это невозможно решить с использованием id, когда мы хотим динамического ввода и явных типов, когда хотим выполнить интроспекцию?
Что произошло, когда вы попробовали? –
Предложение: найдите время, чтобы изучить и понять итерацию/перечисление (это не интроспекция). Как Josh комментирует: попробуйте, а также достаточно разных конфигураций, которые вы полностью понимаете для цикла in-in и массивов с элементами массива. – zaph
Как может любой быть таким ленивым, чтобы спросить «что бы произошло?» И я запустил этот код? ???? – matt