Это зависит от того, о какой переменной вы говорите.Глобальные переменные, статические переменные и переменные экземпляра уже гарантированно будут инициализированы равными 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;