我试图在我的应用程序委托中使用NSWindowController打开一个窗口。
我创建了一个带有关联的NIB的基本NSWindowController,并尝试以这种方式显示该窗口:
@implementation MyAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Show the main window from a separate nib
MyWindowController * theWindowController = [[MyWindowController alloc] initWithWindowNibName:@"MyWindowController"];
[theWindowController showWindow:self];
}
@end
当我启动该应用程序时,MyWindowController的窗口仅出现一秒钟的时间(似乎在启动后立即被释放)。
使用ARC,我怎么能迫使窗口粘住而不立即冲洗?我不使用NSDocuments,并且希望能够同时使用其中许多MyWindowController。
最佳答案
您需要向您的应用程序委托(或在应用程序的整个生命周期内将保留的其他对象)添加一个属性,以保留WindowConroller。例如:
@interface MyAppDelegate : NSObject
@property (strong, nonatomic) MyWindowController * windowController;
@end
然后在初始化窗口控制器时设置此属性。
@implementation MyAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Show the main window from a separate nib
self.windowController = [[MyWindowController alloc] initWithWindowNibName:@"MyWindowController"];
[theWindowController showWindow:self];
}
@end