Как выгрузить подвид? - PullRequest
       3

Как выгрузить подвид?

0 голосов
/ 25 ноября 2010

У меня есть UITableView, который загружает представление, когда нажимается дополнительная кнопка:

MyView *newView = [[MyView alloc]  ...];
[self.navigationController pushViewController:newView];

Внутри представления, когда пользователь выполняет определенное действие, я возвращаюсь обратно к UITableView, выполняя это:

[self.navigationController popViewControllerAnimated:YES];

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

IsЕсть ли правильный способ фактически "полностью разгрузить" представление, чтобы оно было свежим при следующем отображении?

Ответы [ 2 ]

1 голос
/ 25 ноября 2010

Вы должны autorelease newView (который, как я полагаю, на самом деле является View Controller, поскольку вы перемещаете его в стек навигации).

В текущем виде ваш контроллер вида никогда не освобождается и не просачивается:

  • Выделено (сохранить количество 1)
  • Выдвинут в стек навигации, который сохраняет контроллер представления (оставьте счет 2)
  • Затем он извлекается из стека, который освобождает его (оставьте счет 1)
  • После этого он никогда не будет выпущен.

Что касается того, почему вы получаете предыдущие значения, вы также должны нажимать один и тот же экземпляр, а не создавать новый каждый раз, когда вы помещаете его в стек. соответствующий код.

0 голосов
/ 25 ноября 2010

Вам необходимо освободить все сохраненные подпредставления основного представления в viewDidUnload ...

Например, если вы сохранили элементы пользовательского интерфейса, объявив их как выходы в IB, установите их равными нулю, прежде чем выпускать их на dealloc.

Вот пример:

@ interface ...

{
   IBOutlet UIButton *button;
   IBOutlet UITextLabel *label;
   IBOutlet UITableView *tableview;
}

@property (nonatomic, retain) UIButton *button;
...

Затем вы должны установить их равными nil в viewDidUnload

- (void)viewDidUnload {
    self.button = nil;
    self.textlabel = nil;
    self.tableview = nil;
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...