Дело в том, что если у вас 3 оператора if, все эти условия будут проверены, так как age может иметь только 1 значение, вы должны использовать
if (age == 2) //You need the double equals, to check for equality, if you use one equals it will assign the value and the if statement will always be true.
else if (age == 3)
else if (age == 4)
поэтому после выполнения одного из этих условий другие условия НЕ будут проверяться, что экономит время обработки.
Что касается self, то оно будет работать в обоих направлениях, однако, если characterHealth равно @property
, использование self даст ему значение @synthetize setter
, поэтому, если вы объявили его как retain
, это увеличит retain
считать на 1, если вы назначите его без себя, это не увеличит количество retain
. Хотя, поскольку вы присваиваете ему primitive
, в данном случае это не имеет значения, только objects
имеет счет удержания.