我正在尝试在我的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。
答案 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