Загрузка NIB и восстановление соединений - PullRequest
0 голосов
/ 07 апреля 2011

Как код загрузки пера устанавливает соединения с розетками после создания экземпляров объектов?

Документация Apple гласит:

Как только все объекты были созданы и инициализированы из архива, перозагрузка кода пытается восстановить соединения между выходами каждого объекта и соответствующими целевыми объектами .Если ваши пользовательские объекты имеют выходы, объект NSNib пытается восстановить все соединения, созданные в Interface Builder.Сначала он пытается установить соединения, используя собственные методы вашего объекта.Для каждого выхода, которому требуется соединение, объект NSNib ищет метод вида setOutletName: в вашем объекте.Если этот метод существует, объект NSNib вызывает его, передавая в качестве параметра целевой объект ....

Но как он определяет целевой объект ?

Например, у меня есть объект

@interface Foo: NSObject
{
IBOutlet NSButton *redButton;
}

...

@end

иRedButton связан с кнопкой на окне через IB.Как код загрузки пера устанавливает соединение?

Есть ли в файле пера "данные соединения"?

1 Ответ

0 голосов
/ 07 апреля 2011

Да, конечно, файл NIB должен хранить эти соединения. Если вы откроете файл XIB в текстовом редакторе, вы найдете следующие фрагменты для каждого подключения к розетке:

<object class="IBConnectionRecord">
    <object class="IBOutletConnection" key="connection">
        <string key="label">launchAtLoginCheckBox</string>
        <reference key="source" ref="1001"/>
        <reference key="destination" ref="951818764"/>
    </object>
    <int key="connectionID">72</int>
</object>

Похоже, что Apple использует экземпляры частных классов IBConnectionRecord и IBOutletConnection для моделирования соединений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...