所以我试图像这样开设一个新的NSWindow:
NSWindowController *winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
[winCon showWindow:self];
当我这样做时,新窗口会在屏幕上闪烁,就像它出现一样,然后很快消失。我知道我在IB和所有内容中都正确引用了我的窗口。它就像它想要显示窗口,然后它几乎立即被解除分配或奇怪的东西。任何帮助将不胜感激。
答案 0 :(得分:18)
首先,初始值设定项的名称不是-initWithNibName:
,而是-initWithWindowNibName:
。
其次,如果您使用ARC,这是正确的,因为您没有对NSWindowController
实例的强引用,所以您的窗口会变得很糟糕。当方法结束时,您的参考也是如此。
例如,如果您要在应用程序委托界面中执行此操作:
@property(strong) NSWindowController *winCon;
并在您的实施文件中合成它:
@synthesize winCon;
然后你可以像这样设置:
self.winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
[self.winCon showWindow:self];
现在你的窗口不会消失。应用程序关闭时,窗口控制器将被释放。