Почему я не должен освобождать при назначении сохранить свойство? - PullRequest
0 голосов
/ 21 июня 2010

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

У меня есть свойство retain и установлено на него так:

UINavigationController *thing = [[UINavigationController alloc] initWithRootViewController:one];
    // thing's retain count is one
navController = thing;
    // thing's retain count is still one!
[thing release];
    // now retain count is zero, which is wrong

Я не могу понять, почему счетчик удержаний обнуляется. navController определяется как

@property (nonatomic, retain) UINavigationController *navController;

Разве свойство не должно увеличивать счет удержания на единицу?

1 Ответ

7 голосов
/ 21 июня 2010

Проблема в том, что вы присваиваете непосредственно переменной экземпляра свойства, а не вызываете установщик.Свойство магии не срабатывает таким образом.Попробуйте вместо этого

self.navController = thing;

(оставшийся код не нуждается в изменении).

...