Возможно, моя память полностью испортилась, но я помню, что объявление указателей без их инициализации указывало на ноль. Но в последнее время, похоже, это не так. Всегда ли так было? Или это как-то связано с настройками компилятора?
Переменные экземпляра объектов инициализируются в nil в alloc (весь объект обнуляется).
nil
alloc
Edit: Кроме того, глобальные и статические переменные хранения инициализируются нулями (6.7.8 10 C99 Standard , спасибо Дереку за указание на это).
Локальные переменные стека не инициализируются автоматически. Это не изменилось в известной истории.
С Переход на примечания к выпуску ARC :
Переменные стека инициализируются с nil При использовании ARC сильные, слабые и автоматически высвобождаемые переменные стека теперь неявно инициализируются с nil. Например: - (void)myMethod { NSString *name; NSLog(@"name: %@", name); } будет записывать null в качестве значения имени, а не при падении.
При использовании ARC сильные, слабые и автоматически высвобождаемые переменные стека теперь неявно инициализируются с nil. Например:
- (void)myMethod { NSString *name; NSLog(@"name: %@", name); }
будет записывать null в качестве значения имени, а не при падении.
null