NSWindowController showWindow:闪烁的窗口

Jam*_*enn 11 macos xcode objective-c

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

NSWindowController *winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
[winCon showWindow:self];
Run Code Online (Sandbox Code Playgroud)

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

Ext*_*ire 18

首先,初始化程序的名称不是-initWithNibName:,但是-initWithWindowNibName:.

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

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

@property(strong) NSWindowController *winCon;
Run Code Online (Sandbox Code Playgroud)

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

@synthesize winCon;
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样设置:

self.winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
[self.winCon showWindow:self];
Run Code Online (Sandbox Code Playgroud)

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