Ответ 1
Переменные экземпляров классов в Objective-C гарантированно будут инициализированы пустым значением (0, nil и т.д.)
I.e., ObjectiveC ведет себя как C, в том случае, если вы создаете указатель, например:
NSString* c;
Указывает ли c на nil или на случайное значение в области памяти, которая была зарезервирована для него?
Другими словами, делать указатели предварительно инициализированными, или мне нужно сделать это самостоятельно? Как я уже сказал, я знаю, что это не так в C/С++, но мне интересно, есть ли здесь какая-то магия ObjC или нет.
Переменные экземпляров классов в Objective-C гарантированно будут инициализированы пустым значением (0, nil и т.д.)
Переменные экземпляра класса и статические/глобальные переменные инициализируются нулевым значением /NULL/ 0/false соответствующим образом.
Однако локальные переменные не инициализируются.
Они ноль, и вам разрешено предположить это, например, путем тестирования:
if (nil == myVariableIHaventInitialisedYet)
{
myVariableIHaventInitialisedYet = [SomeThingIMightMake initWithLove];
}
Следите за локальными переменными на этом. Они не инициализируются до нуля, поэтому убедитесь, что они были init'd где-то, прежде чем использовать его, если вы не запустили ноль в своем объявлении. Как говорит Петр, класс, экземпляр и статичность для вас не нужны, поэтому не беспокойтесь.
Обычно нет проблем, но, в частности, это будет иметь значение для вызовов с адресами указателей, которые были переданы (например, NSError **).