Я предполагаю, что для создания экземпляра вашего оконного контроллера в Interface Builder вы перетащили общий файл NSObject
в файл nib, а затем присвоили свой собственный подклассу NSWindowController
как класс объекта, это правильно? Если это так, то я думаю, что здесь основное различие состоит в том, что вы имеете дело с созданием экземпляра универсального объекта, а не с пользовательского объекта, включенного в одну из палитр IB.
В большинстве случаев при создании и настройке объекта с использованием IB параметры, которые вы указываете в разных инспекторах, кодируются с использованием метода encodeWithCoder:
при сохранении файла nib. Когда вы загружаете этот файл nib в приложение, эти объекты инициализируются с использованием метода initWithCoder:
.
Однако в случае этого экземпляра универсального объекта Interface Builder не обязательно ничего знает о классе создаваемого объекта.Поскольку вы можете указать любое имя класса для создания экземпляра, если вы укажете класс, который IB не загрузил с помощью палитры или рамки, он не может сериализовать этот объект с помощью NSCoding
. Поэтому я считаю, что при создании экземпляра такого общего объекта он инициализируется с использованием init
, а не initWithCoder:
, потому что он не был сохранен с использованием encodeWithCoder:
, в первую очередь, когда файл nib был сохранен.
Я не знаю, зарегистрировано ли это где угодно, но я думаю, именно поэтому вы видите разницу. Я также не думаю, что это специфично для NSWindowController
, но вы увидите то же поведение от любого объекта, созданного как общий NSObject
в IB, независимо от конкретного класса.
Почему вы устанавливаете контроллер окна в наконечник? Обычно вы используете оконный контроллер для * загрузки * nib, а оконный контроллер будет владельцем файла для содержимого nib. –
Этот конкретный оконный контроллер предназначен для листа, который опускается поверх главного окна моего приложения. Сделав его владельцем файла загружаемого наконечника, и объект верхнего уровня в моем MainMenu nib, я могу легко сделать IB-соединения с ним из любого места. Отлично работает. :-) –