Выпуск UIviewController объекта в iOS 5? - PullRequest
2 голосов
/ 14 марта 2012

Я хочу выпустить объект UIViewController в iOS 5. В предыдущих версиях iOS (> 5.0) мы всегда пишем код или поддерживаем код с утечками памяти, следующим:

if(myViewControllerObject != nil){
     [myViewControllerObject.view removeFromSuperView];
     [myViewControllerObject release];
     myViewControllerObject = nil;
} 
 myViewControllerObject = [[MyViewControllerObject alloc] initWithNibName:@"MyViewControllerObject" bundle:nil];
  [self.view addSubview: myViewControllerObject.view];

Но в iOS 5 мы не можем использовать release метод для освобождения объекта UIviewController, что мы должны сделать в iOS 5 для поддержания дополнительного выделения объектов и утечек?Каков будет лучший метод для реализации этой иерархии?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 14 марта 2012

Ваш код не изменится на iOS 5, если вы не активируете автоматический подсчет ссылок для своего проекта. Тогда вы не сможете использовать release, dealloc и т. Д., Поскольку система обрабатывает управление памятью.

Чтобы узнать больше об ARC, см. Этот вопрос: Как работает новый механизм автоматического подсчета ссылок?

0 голосов
/ 14 марта 2012

Вы не должны вызывать

[myViewControllerObject.view removeFromSuperView];

. Класс UIViewController (базовый класс myViewControllerObject) может автоматически устанавливать для этого свойства значение nil в условиях нехватки памяти, а также при окончательном освобождении контроллера представления.

Так что все должно быть в порядке

[myViewControllerObject release];
 myViewControllerObject = nil;

Обновление: для ARC см. Ответ ниже

0 голосов
/ 14 марта 2012

Если вы используете ARC (автоматическое сохранение / подсчет ссылок), вам вообще не нужно использовать release. Компилятор теперь подсчитывает все ваши сохранения и освобождает их автоматически. Это на самом деле не сборка мусора, но компилятор просто определяет, где объект больше не используется, и автоматически добавляет релиз.

Так что в ответ на ваш вопрос, просто оставьте это, компилятор разберется с этим.

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