NSNibAwaking
Этот неофициальный протокол состоит из отдельного метода, awakeFromNib. Классы могут реализовать этот метод для инициализации информации состояния после того, как объекты были загружены из Интерфейсного архива Разработчика (файл пера).
Наследование
Не применимый
Соответствует
Не применимый
Оператор импорта
Swift
import AppKit
Objective C
@import AppKit;
Доступность
Доступный в OS X v10.0 и позже.
-
Подготавливает получатель к службе после того, как это было загружено из Интерфейсного архива Разработчика или файла пера.
Объявление
Swift
func awakeFromNib()Objective C
- (void)awakeFromNibОбсуждение
awakeFromNibсообщение отправляется в каждый объект, загруженный из архива, но только если это может реагировать на сообщение, и только после того, как все объекты в архиве были загружены и инициализированы. Когда объект получаетawakeFromNibсообщение, это, как гарантируют, будет иметь весь свой набор переменных экземпляра выхода.Во время процесса инстанцирования каждый объект в архиве разархивирован и затем инициализирован с методом, приличествующим его типу. Представления какао (и пользовательские представления, которые могут быть настроены с помощью связанной палитры Interface Builder) инициализируются с помощью их
initWithCoder:метод. Пользовательские представления инициализируются с помощью ихinitWithFrame:метод. Пользовательские классы, которые инстанцировали в пере, инициализируются с помощью ихinitметод.Как только все объекты инстанцировали и инициализировали от архива, перо, загружающее код, пытается восстановить соединения между выходами каждого объекта и соответствующими целевыми объектами. Если Ваши пользовательские объекты имеют выходы,
NSNibвозразите пытается восстановить любые соединения, которые Вы создали в Интерфейсном Разработчике. Это запускается путем попытки установить соединения с помощью собственных методов объекта сначала. Для каждого выхода, которому нужно соединение,NSNibобъект ищет метод формыsetOutletName:в Вашем объекте. Если тот метод существует,NSNibвызовы объектов это, передавая целевой объект в качестве параметра. Если Вы не определяли метод установщика с помощью того точного имени, поиски объектов NSNib объект для переменной экземпляра (типаIBOutlet id) с соответствующим именем выхода и попытками установить его значение непосредственно. Если переменная экземпляра с корректным именем не может быть найдена, инициализация того соединения не происходит. Наконец, после того, как все объекты полностью инициализируются, каждый получаетawakeFromNibсообщение.Как правило, Вы реализуете
awakeFromNibдля класса Вы связываетесь с Владельцем “Файла” файла пера. Вы могли бы также хотеть реализовать этот метод для любых других классов, которых Вы инстанцируете непосредственно в Вашем файле пера. Задание этих объектов должно дать Вам, рычаг для соединения файла пера возражает против других объектов в Вашем приложении. Как только то задание закончено, можно или избавиться от объектов или использовать их в качестве контроллера для объектов файла пера.Пример того, как Вы могли бы использовать
awakeFromNibпоказан ниже. Предположим, что Ваш файл пера имеет два пользовательских представления, которые должны быть расположены друг относительно друга во время выполнения. Попытка расположить их во время инициализации могла бы перестать работать, потому что другое представление еще не могло бы быть разархивировано и инициализировано все же. Однако можно расположить их обоих во владельца файла пераawakeFromNibметод. В коде ниже,firstViewиsecondViewвыходы владельца файла:- (void)awakeFromNib {NSRect viewFrame;viewFrame = [firstView frame];viewFrame.origin.x += viewFrame.size.width;[secondView setFrame:viewFrame];return;}
Рекомендуется поддержать взаимно-однозначное соответствие между объектами Владельца Файла и их связанными файлами пера. Загрузка двух файлов пера с объектом Владельца того же Файла вызывает тот объект
awakeFromNibметод, вызываемый дважды, который мог заставить некоторые структуры данных быть повторно инициализированными нежелательными способами. Также рекомендуется избежать загружать другие файлы пера из ВашегоawakeFromNibреализация метода.Необходимо вызвать
superреализацияawakeFromNibтолько если Вы знаете наверняка, что Ваш суперкласс обеспечивает реализацию. Поскольку Набор Приложения не обеспечивает реализацию по умолчаниюawakeFromNibметод, вызываяsuperрезультаты в исключении, если родительский класс не реализует его. Классы, класс непосредственного родителя которыхNSObjectилиNSViewне должны вызыватьsuperреализация. Для любых других классов можно использоватьinstancesRespondToSelector:метод классаNSObjectопределить, отвечает ли родительский класс наawakeFromNibи вызовите метод, если он делает.Оператор импорта
Objective C
@import AppKit;Swift
import AppKitДоступность
Доступный в OS X v10.0 и позже.
См. также
+ loadNibNamed:owner:(Дополнения NSBundle)- awakeAfterUsingCoder(Класс NSObject)+ instancesRespondToSelector:(Класс NSObject)- initWithCoder:(Протокол NSCoding)+ initialize(Класс NSObject)
