3

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

4

1 回答 1

11

您需要向您的应用程序委托(或将在您的应用程序的整个生命周期中保留的其他对象)添加一个保留 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
于 2012-07-26T19:59:47.320 回答