Iphone Dev - ViewDidUnload - PullRequest
       1

Iphone Dev - ViewDidUnload

1 голос
/ 05 марта 2012

Я использую ARC

В некоторых учебных пособиях, которые я смотрю, он однажды создал UILabel, а затем в методе ViewDidUnload он написал: self.theLabelVariable = nil;С тех пор я не видел, чтобы он снова что-то писал в ViewDidUnload ... пока.

Я немного запутался в том, какой код должен идти в этом методе.

1.Что и когда я должен написать в нем?Он комментирует: «Отпустите все сохраненные подпредставления основного представления. Например, self.myOutlet = nil;»Не совсем уверен, что это означает, хотя

2.Он также имеет «[super ViewDidUnload]» Что это делает?

3.Кто-то сказал, что «обнулять его, если вы не собираетесь использовать его снова, хорошая идея».Но в руководстве, где кто-то написал «self.TheLabelVariable = nil», когда я нажал кнопку «Домой», а затем снова запустил приложение, все работало нормально.Или это не cViewDidUnload при нажатии кнопки домой?Полагаю, третий вопрос: когда это называется?

Ответы [ 2 ]

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

1 - Вы должны использовать viewDidUnload, чтобы освободить (установите в nil, если это свойство) любой объект, который не нужен при выгрузке представления, например представления, и которые вы снова воссоздаете в viewDidLoad. Пример: вам не нужна метка, когда представление выгружено (нажатием кнопки home), затем вы отпускаете его, а затем создаете его снова, когда представление загружается (приложение запускается).

2 - [супер что-то] вызывает метод суперкласса. Например, если у вас есть класс, являющийся потомком UIViewController, вызов [super viewDidUnload] выполнит код Apple ViewDidUnload UIViewController (который может быть пустым ... или нет).

3 - См. Пример на 1. Но дело в том, что когда вам больше не нужен объект, установите его на ноль, чтобы его можно было освободить, и вы не тратите впустую память.

Дайте мне знать, если я что-то пропустил или есть что-то, чего вы не поняли.

EDIT

Для представлений, которые инициализируются из файла XIB (построителя интерфейса), называемого IBOutlets, вам не нужно делать self.label = nil; потому что UIViewController делает это за вас. Точно так же, как он инициализировал его для вас, он также выпустит его.

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

Вы должны сделать это со всеми своими IBOutlets. Вы должны установить их всех на nil. И [super viewDidUnload]; разгружает супер-просмотр! Вроде как [super viewDidLoad];

...