NSWindowController showWindow: мигает окно

Итак, я пытаюсь открыть новый NSWindow так:

NSWindowController *winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
[winCon showWindow:self];

Когда я это делаю, новое окно мигает на экране, так как оно появляется, а затем быстро исчезает. Я знаю, что у меня есть окно, которое правильно указано в IB и во всем. Это похоже на то, что он хочет показать окно, но затем он сразу освобождается или что-то странное. Любая помощь будет оценена.

Ответ 1

Во-первых, имя инициализатора не -initWithNibName:, а -initWithWindowNibName:.

Во-вторых, и это верно, если вы используете ARC, ваше окно выходит из foom, потому что у вас нет сильной ссылки для вашего экземпляра NSWindowController. Когда метод заканчивается, значит, и ваша ссылка.

Если, скажем, вы должны сделать это вместо этого в интерфейсе делегирования приложения:

@property(strong) NSWindowController *winCon;

И синтезировал его в вашем файле реализации:

@synthesize winCon;

Тогда вы можете настроить следующее:

self.winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
[self.winCon showWindow:self];

Теперь ваше окно не исчезнет. Контроллер окна будет выпущен, когда приложение закроется.