我试图在我的应用程序委托中使用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

10-07 23:30