Так что я здесь немного запутался. У меня есть приложение Какао, в заголовке appdelegate я объявляю NSDrawer, который я подключил в Interfacebuilder и чей contentView я устанавливаю программно в зависимости от контекста. Contentviews содержат кнопки, которые связаны с различными функциями в Appdelegate.
@property (strong) IBOutlet NSDrawer *theDrawer;
Когда мое приложение запускает приложение, и я проверяю его в отладчике, theDrawer не равно нулю и правильно создается InterfaceBuilder. в
Теперь, если пользователь нажимает любую кнопку, оказывается, что ссылки на [[делегат NSApp] theDrawer] будут проигнорированы, потому что theDrawer равно нулю. что для меня не имеет смысла. Я попытался исправить это, специально установив делегата при запуске приложения.
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[NSApp setDelegate:self];
}
Я проверил это самостоятельно. На этом этапе Drawer не равен нулю. Но даже после того, как я явно установил делегат, все будущие вызовы [[NSApp delegate] theDrawer] равны нулю.
Как я могу убедиться, что у моего делегата приложения есть доступ к переменным? Насколько я понимаю, вызовы делегата NSapp вернут уникальный экземпляр приложения.
Кажется, что когда пользователь нажимает кнопку, это создает новый поток, и делегат NSApp вернет nil для всех переменных.
Любая помощь приветствуется