Ответ 1
awakeFromNib
вызывается после представления, а его дочерние объекты были выделены и инициализированы. Гарантируется, что в представлении будут заданы все его переменные экземпляра.
EDIT: Подробный пересчет событий:
В процессе создания экземпляра каждый объект в архиве unarchived, а затем инициализируется методом, соответствующим его типу. Cocoa представления (и пользовательские представления, которые можно настроить с помощью связанная с палитрой Interface Builder) инициализируются с использованием Метод initWithCoder:. Пользовательские представления инициализируются с использованием initWithFrame: метод. Пользовательские классы, созданные в ноль инициализируется с использованием метода init.
Как только все объекты были созданы и инициализированы из архива, код загрузки nib пытается восстановить соединения между выводами каждого объекта и соответствующими целевыми объектами. Если у ваших пользовательских объектов есть выходы, объект NSNib пытается восстановите любые соединения, созданные в Interface Builder. Это начинается с попытки установить соединения, используя ваши собственные объекты методы в первую очередь. Для каждой розетки, требующей подключения, NSNib объект ищет метод формы setOutletName: в вашем объекте. Если этот метод существует, объект NSNib вызывает его, передавая целевой объект как параметр. Если вы не определили метод сеттера с этим точное имя, объект NSNib ищет объект для экземпляра переменная (типа IBOutlet id) с соответствующим именем розетки и пытается установить его значение напрямую. Если переменная экземпляра с правильное имя не может быть найдено, инициализация этого соединения не возникает. Наконец, после того, как все объекты будут полностью инициализированы, каждая получает сообщение awakeFromNib.
EDIT 2. Это не относится к контроллерам представлений, загружаемым из раскадровки.