Является ли недвижимость действительно на вашем NSApplication
подклассе? или это на вас делегировать класс приложения? Это не невозможно для того, чтобы быть на объекте приложения, но это был бы довольно необычный (и, возможно, плохой) шаблон.
Короче говоря, я подозреваю, что вы, вероятно, подключаете его к неправильному объекту.
EDIT: Ah. Понимаю. Вы пытаетесь получить доступ к вещам через массив topLevelObjects
, но на практике вы не можете рассчитывать на порядок topLevelObjects
. Что вам нужно, чтобы полагаться на выходы owner
, заселяемые, но вы передаете nil
для owner
. topLevelObjects
существует только для того, чтобы предоставить вызывающему абоненту «право собственности» (в смысле подсчета ссылок) объектов верхнего уровня в xib для целей управления памятью, это не значит, что оно «используется» прямо так, как вы здесь. (Справедливости ради, я могу представить себе ситуации, в которых вам, возможно, понадобится исследовать этот массив, но это вряд ли повысится до этого уровня.)
Канонический способ сделать это - использовать в качестве владельца подкласс NSViewController
. В Xcode, если вы добавите подпроект NSViewController
в свой проект, он даст вам возможность создать файл xib в то же время, что и все, что подключено. Затем вы просто инициализируете подкласс NSViewController
во время выполнения, а свойство outlet view
этого класса будет заполнено корневым представлением. Вы можете, очевидно, добавить больше торговых точек и подключить все, что захотите.
This post, похоже, охватывает основы, если вы ищете более подробную информацию. Документы Apple о файлах xib и о том, как они работают, - here.
Это сообщение ** всего ** сообщение об ошибке? Кстати, переменные экземпляра условного обозначения начинаются с строчной буквы. – zaph
Да, это сообщение об ошибке, оно ломается в строке, где я пытаюсь получить доступ к ярлыку. – BigRed