Нужно ли примитивы инициализировать нулем? - PullRequest
1 голос
/ 20 ноября 2011

Нужно ли явно обнулять примитивы, т. Е. Установить BOOL s на NO, установить int s на 0?

Нужно ли явно назначить NSString* дляnil или @""?

Я знаю, что указатели должны быть явно установлены на nil, иначе они могут быть заполнены мусором.(Или это только для Objective-C ++?)

Ответы [ 2 ]

6 голосов
/ 20 ноября 2011

Это зависит от того, о какой переменной вы говорите.Глобальные переменные, статические переменные и переменные экземпляра уже гарантированно будут инициализированы равными 0.

Локальные переменные - это отдельная история.По умолчанию они никогда не инициализируются вообще , поэтому не следует читать их значения до тех пор, пока вы не инициализируете или не установите их.Строго не обязательно инициализировать их 0.Например, следующий код очень избыточен:

Controller *controller = nil;
int countOfThings = 0;
controller = [Controller sharedInstance];
countOfThings = controller.totalThings - controller.thingsUsed;

Вместо этого вы должны инициализировать переменные в значения, которые вы действительно хотите:

Controller *controller = [Controller sharedInstance];
int countOfThings = controller.totalThings - controller.thingsUsed;
4 голосов
/ 20 ноября 2011

Это всегда хорошая практика программирования для инициализации примитивов, но в общем случае это требуется только в том случае, если вы ссылаетесь на эту переменную, когда есть вероятность, что для нее не было установлено ничего, кроме мусорной памяти.

Я считаю, чтоКомпилятор по-прежнему выдает предупреждения о «неинициализированных переменных», но если нет, то в XCode определенно есть флажок компилятора.

Флаг компилятора для этого равен -Wuninitialized, кстати

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...