Как новичка Objective C, я не могу понять, почему это нормально:Создать новый экземпляр с тем же именем через цикл
@autoreleasepool {
for (int i = 0; i<10; i++) {
NSNumber *newNumber = [[NSNumber alloc] initWithInt:(i)];
NSLog(@"New number = %@", newNumber);
}
}
return 0;
но не в этом:
@autoreleasepool {
NSNumber *newNumber = [[NSNumber alloc] initWithInt:(0)];
NSLog(@"New number = %@", newNumber);
NSNumber *newNumber = [[NSNumber alloc] initWithInt:(1)];
NSLog(@"New number = %@", newNumber);
}
return 0;
В обоих случаях я do redefine * newNumber (?) Почему это другое?
Я бы сказал, что Objective-C (как и большинство языков) позволяет объявлять переменную только в пределах области. Тип не имеет значения. В вашем ответе второе использование 'newNumber' не является объявлением. – rmaddy
Да, конечно, большинство языков, основанных на масштабах, следуют аналогичному правилу. Я просто упомянул Objective-C специально, потому что об этом спрашивал OP. –
Точка моего комментария, что вы указали »* Objective-C позволяет только объявить * тип * локальной переменной в пределах области. *. Я говорю, что этот тип не имеет значения. Утверждение должно быть просто «* Objective-C» позволяет только объявлять локальную переменную один раз в пределах области. * « – rmaddy