Цель c переназначить переменную - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть 2 переменные:

  1. UIView *view1;
  2. UIView *view2 = [[UIView alloc] init]

Когда я назначаю view1=view2 - я должен отпустить view2? Или просто отпустить view1? Или view1 = [view2 retain]; [view1 release]; это правильный путь?

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

Это полностью зависит от того, что view1 и view2 на момент вашего view1 = view2.Если это так:

UIView *view1;
UIView *view2 = [[UIView alloc] init];

Тогда вполне нормально просто сделать:

view1 = view2;

Если, однако, view1 уже указывает на объект, такой как в этом:

UIView *view1 = [[UIView alloc] init];
UIView *view2 = [[UIView alloc] init];

Тогда вы захотите (вероятно) сделать это:

[view1 release];
view1 = [view2 retain];

Я говорю, вероятно, потому что, ну, это зависит от того, что вы хотите сделать.Может быть, вы не хотите retain на view2, потому что вы можете не захотеть иметь сильную ссылку на него

1020 * Конечно, все это спорный вопрос, если вы просто используете ARC все равно:.. -Д
0 голосов
/ 06 февраля 2012

Если вы владеете объектом (выделяете, сохраняете или копируете его), вы должны освободить его.Если вы не владеете им, вы не выпускаете его.

То есть, view2 владеет представлением, а view1 - нет.Вы должны освободить view2, но не view1.

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