NSWindowController窗口立即发布

时间:2012-07-26 19:55:14

标签: cocoa osx-lion automatic-ref-counting nswindowcontroller

我正在尝试在我的app委托中使用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。

1 个答案:

答案 0 :(得分:11)

您需要向应用委托添加一个属性(或者在应用的生命周期内将会保留的其他对象),该属性会保留窗口控制器。例如:

@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