NSWindowController showWindow:闪烁的窗口

时间:2012-11-29 03:32:19

标签: objective-c xcode macos

所以我试图像这样开设一个新的NSWindow:

NSWindowController *winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
[winCon showWindow:self];

当我这样做时,新窗口会在屏幕上闪烁,就像它出现一样,然后很快消失。我知道我在IB和所有内容中都正确引用了我的窗口。它就像它想要显示窗口,然后它几乎立即被解除分配或奇怪的东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:18)

首先,初始值设定项的名称不是-initWithNibName:,而是-initWithWindowNibName:

其次,如果您使用ARC,这是正确的,因为您没有对NSWindowController实例的强引用,所以您的窗口会变得很糟糕。当方法结束时,您的参考也是如此。

例如,如果您要在应用程序委托界面中执行此操作:

@property(strong) NSWindowController *winCon;

并在您的实施文件中合成它:

@synthesize winCon;

然后你可以像这样设置:

self.winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
[self.winCon showWindow:self];

现在你的窗口不会消失。应用程序关闭时,窗口控制器将被释放。