Должен ли я использовать @property для переменных классов контроллера? - PullRequest
0 голосов
/ 22 января 2009

Вопрос: я должен использовать свойства для своих контроллеров представления?

Рассмотрим следующий случай:

  1. У меня в родительском классе есть объект контроллера представления: MyViewController * myVC;

  2. Я не выпускаю этот контроллер представления в методе dealloc родительского класса.

  3. Я использую контроллер вида так:

    // Allocate and Initialize view controller
    myVC = [[MyViewController alloc] initWithNibName:@"newView" bundle:nil];
    
    // Push View Controller
    [self.navigationController pushViewController:myVC animated:YES];
    
    // Release memory
    [myVC release];
    myVC = nil;
    

Есть ли проблемы с этим подходом?

Ответы [ 2 ]

1 голос
/ 24 января 2009

В вашем исправленном коде myVC сохраняется контроллером навигации и будет освобожден (и освобожден), когда он будет извлечен из стека. Если это поведение, которое вы ищете, то да, этот код просто отлично.

Если вам нужно, чтобы myVC зависал для повторного использования или чего-то еще позже, переместите выпуск в метод dealloc вашего родительского класса и удалите присвоение nil.

1 голос
/ 22 января 2009

Что сказал Брэд Ларсон. myVC утечет, если вы не освободите его в методе dealloc класса-владельца. Присвоение этому свойству свойства не повлияет на это поведение (и откуда берется itemEditVC var?). Единственная причина, по которой он будет представлен как свойство, заключается в том, что внешним классам необходим доступ к этой переменной, и вы хотите обеспечить надлежащую семантику освобождения / сохранения при это свойство изменено.

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