Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Ссылка платформы AppKit ссылка на протокол NSNibAwaking

Опции
Развертывание Target:

На этой странице
Язык:

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)