Управление памятью в пользовательском UIViewController - PullRequest
1 голос
/ 23 марта 2012

Я новичок в разработке под iOS, но я знаком с основами управления памятью в Obj-C.Однако документы Apple о пользовательских UIViewControllers немного смутили меня.

Итак, у меня есть PagingController, в котором хранится массив EntryViewController объектов.(Все они UIViewControllers.) Эти объекты загружаются динамически и, конечно, освобождаются при необходимости.Представление в PagingController создается в -loadView и сохраняется в self.view, как сказано в документации.
Всякий раз, когда я загружаю EntryViewController (как ctrl), я вызываю [self.view addSubview:ctrl.view];.Мне также нужно вызвать ctrl.parent = self;, поскольку целевая ОС - 3.0, и я не хочу изменять частную переменную (_parentViewController).(parent определяется как @property(assign) PagingController *parent;)

Вот мои вопросы:

  1. Должен ли я сам выпустить self.view, или UIViewController позаботится об этом?
  2. Нужно ли сохранять parent (собственность в EntryViewController)?Я предполагаю, что это бессмысленно, поскольку все дочерние контроллеры представления освобождаются, когда родительский объект выгружается.
  3. Нужно ли вызывать [self.view removeFromSuperview] в методе -dealloc EntryViewController?В документах сказано, что мне нужно управлять всеми подпредставлениями, поэтому я не уверен, будет ли это вызываться автоматически.

Или я просто запутался в том, как создать собственный контроллер представления в первомместо

1 Ответ

0 голосов
/ 23 марта 2012
  1. UIViewController позаботится об этом
  2. Вы не должны сохранять родителя, установите свойство для назначения, в противном случае у вас будет цикл сохранения
  3. Контроллер представления будетпозаботьтесь о его просмотре, вам нужно только освободить другие подпредставления, которые вы сохраняете (removeFromSuperview не требуется)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...