У меня есть класс BrowserWindowController, который расширяет NSWindowController. У моего делегата приложения есть BrowserWindowController, который он выделяет, инициализирует и указывает переменную экземпляра при запуске приложения. Затем он отображает свое окно. Цель состоит в том, чтобы открыть окно из NIB.(Cocoa Mac) NSWindowController showWindow выделяет/инициализирует новый NSWindowController?
Однако код, который я использую, в конечном итоге выделяет TWO BrowserWindowControllers и инициализирует оба. Я использовал отладчик для отслеживания, когда метод initWithWindow Конвенции по биологическому оружию, называется:
browser = [[BrowserWindowController alloc] initWithWindowNibName:@"BrowserWindow"]; //this calls initWithWindow as expected
[browser showWindow:nil]; //this allocates ANOTHER BWC and calls initWithWindow on it!
ShowWindow делает новый BrowserWindowController. Я не знаю, что указывает на новый объект, который он делает. Для меня это огромная проблема. Любой способ обойти это или создать окно, используя другой метод? Или я мог бы хотя бы получить указатель на контроллер, который showWindow создает по любой причине?
Знаете ли вы, когда я вызываю showWindow, он проходит через множество встроенных вызовов метода загрузки nib. Может быть, где-то в моем файле xib мне нужно что-то изменить? – sudo
Итак, я тестировал в Инструментах, и он говорит, что ответственная библиотека распределения выделенного браузераWindowController - AppKit. – sudo
И еще одна причина, почему вы используете nil здесь, когда вы используете self ?? –