2009-07-29 2 views
1

У меня есть viewcontroller, который не может быть выпущен, так как это подкласс с дополнительной функциональностью ... Во всяком случае, их много, и мне нужны представления, которые будут выпущены, когда они выходят на экран.можно освободить viewcontroller.view без выпуска viewcontroller?

removeFromSuperView исчезает, но они остаются в памяти. Единственный способ избавиться от представления из памяти - это полностью исключить его. Однако, когда я обращаюсь к viewcontroller.view, он просто собирается создать представление снова, не так ли?

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

В идеале у меня будет множество взглядов, которые я могу [копировать] Into viewcontroller.view когда это они необходимы (на экране) и полностью освобождаются, когда они выходят на экран, поэтому Cocoa знает, как избавиться от любой внутренней графической памяти, которую он выделяет.

Любые мысли?
Благодаря

+0

Я не понимаю, почему вы не можете освободить контроллер вида, если его «подкласс с дополнительной функциональностью»? – Jasarien

+0

Действительно, путают, почему подклассы вынуждены постоянно проживать ... –

+0

У меня есть класс «block», который подклассифицирует UIViewController и содержит информацию о содержании и макете, которую я хочу настроить только один раз, когда загружается страница. Я хочу динамическое управление UIView, так как это то, что есть в памяти, когда у меня много этих «блоков». – Sam

ответ

2

Чтобы освободить вид из контроллера, использование:

self.view = nil; 

Позже ссылка self.view в контексте 'get' воссоздает представление (перезагрузится из NIB или вызовет loadView).

Кроме того, никогда не отправляйте сообщение dealloc прямо на ваш просмотр или любой объект.

0

Вы можете разрушающие вид в

- viewWillDisappear:(BOOL)animated 

и воссоздать его в

- viewWillAppear:(BOOL)animated 

методов контроллера зрения

Смежные вопросы