Преимущества пробуждения от Nib? - PullRequest
7 голосов
/ 23 июня 2011

Я изучал coredata, создав множество простых тестовых приложений на основе шаблона контроллера xcode Navigation с проверкой «use coredata».

Метод awakeFromNib в делегате приложения является источником проблемдля меня, потому что я добавляю другие виды в контроллер и изменяю последовательность загрузки, так что RootViewController может быть вторым или третьим выбором.

Я выяснил, что делает awakeFromNib, и яудалил его, чтобы делегат приложения больше не был привязан к какому-либо конкретному представлению.(Поэтому, когда я действительно хочу загрузить RootViewController, я загружу его как обычное представление и использую его собственный viewDidLoad для инициализации управляемогоObjectContext для представления.)с помощью awakeFromNIb в AppDelegate?или это просто еще один способ сделать то же самое, что я делаю из метода viewDidLoad?

1 Ответ

5 голосов
/ 23 июня 2011

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

awakeFromNib вызывается, когда файл пера, связанный с классом, загружается с диска.Любой класс, который может иметь перо, может использовать его.viewDidLoad используется только контроллерами представления.Обычно он также вызывается при загрузке из nib, но также может вызываться представлением, созданным в памяти (очень редкое обстоятельство.)

В любом случае вы помещаете функциональность только в ту, которую хотите запуститьодин раз, когда экземпляр впервые загружен.Например, распространенная ошибка nubie заключается в добавлении кода в viewDidLoad, который должен запускаться каждый раз, когда появляется представление.Скажите как с основным видом, который открывает подробный вид и затем появляется снова, когда подробный вид отклоняется.Если код для основного вида находится в viewDidLoad, он будет запускаться только при первой загрузке основного вида, но не в любой из последующих случаев, когда главный вид исчезает и появляется снова.

Как правило, вы не инициализируете какие-либо другие представления или делаете что-либо во время пробуждения делегата приложения от nib.Это обычно выполняется в applicationDidFinishLaunching.

...