2016-08-12 3 views
0

Я добавил многократные UIViews за пределами UIViewController, и все представления имеют выход недели. Как я могу освободить память обо всем представлении, когда pop to back ViewController. enter image description hereКак удалить внешние UIViews из UIViewController?

enter image description here

+0

Вы не используете ARC ?? –

+0

Вы получаете предупреждения о памяти? –

+0

Если он слаб, вам не о чем беспокоиться, я верю. – ldindu

ответ

2

: Первые представления (или другие объекты) на верхнем уровне XIb не должны иметь weak вид имущества в их соответствующем контроллере представления. В отличие от вида в иерархии представлений, у них нет владельца после загрузки xib, и поэтому они все равно будут освобождены.

Теперь вы, похоже, используете ivars напрямую (почему?), поэтому я на самом деле не уверен, но я не думаю, что это имеет значение. Предполагая, что Interface Builder принимает их как выходы и устанавливает их, они скоро исчезнут без владельца.

С этой точки зрения, вы уже сохранили память ...

Не зная больше о своем проекте я не могу сказать, но тот факт, что вы не просите помощи на нарваться nil проблем заставляет меня угадать, что вы принимаете участие в этих взглядах где-то в другом месте. Чтобы освободить их, вам необходимо установить любое свойство (вы : надеюсь, что скоро с использованием свойств для этого), относится к ним сильно nil. ARC делает остальное для вас. Не использовать ARC? Начните использовать его ...

Я бы рекомендовал реструктурировать это. Дайте диспетчеру просмотра (я думаю, что это какой-то FirstFlyerViewController) сильный свойства к представлениям (если вам определенно нужно иметь их вне иерархии представлений, в противном случае просто добавьте их в качестве подзонов где-нибудь). Используйте их, и как только вы вытащите контроллер вида и, он будет освобожден (обратите внимание, что это обычно выполняется каркасом, а не самим), и они освобождаются вместе с ним.

+0

Я ценю, но я не использую ARC .. как я могу удалить все виды без ARC? –

+0

Если вы не используете ARC, вы не должны использовать ключевые слова '__strong' и' __weak', они концептуально принадлежат ARC (были введены с ним). Я удивлен, что компилятор не жалуется. Чтобы отказаться от права собственности на представления, вы отправляете им сообщение о выпуске: '[aView release]'. Но, как я уже сказал, это предполагает, что вы * владеете где-то. Скриншоты подразумевают, что у вас их нет. Я настоятельно рекомендую пересмотреть структуру xib и app. Также подумайте об использовании свойств. – Gero

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

  • Нет связанных вопросов^_^