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
объект ищет метод формыset
OutletName:
в Вашем объекте. Если тот метод существует,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)