我正在使用 NSPanel 来显示应用程序统计信息。当App Delegate调用computeStats时,它会尝试检查NSPanel是否可见。现在 NSPanel 不会在应用程序启动时加载。它要求用户通过命令将其“打开”。然后显示 NSPanel。
-(IBAction)viewStats:(id)sender
{
[self.statsPanel makeKeyAndOrderFront:self];
}
现在,如果用户关闭统计面板,computeStats 方法会检查它是否可见,只有在可见的情况下,它才会使用统计数据更新 NSTextFields。
-(void)computeStats
{
if ([self.statsPanel isVisible])
{
[self.minLabel setDoubleValue:min];
[self.medLabel setDoubleValue:med];
[self.avgLabel setDoubleValue:avg];
[self.maxLabel setDoubleValue:max];
}
}
但是,在用户打开然后关闭 NSPanel 之后,这会失败(因 EXC_BAD_ACCESS 崩溃)。就好像面板仍然可见,即使在用户关闭它之后也是如此。
最佳答案
尝试
[self.statsPanel setReleasedWhenClosed:NO];
首次显示统计面板时。
关于objective-c - 如何判断 NSPanel 是否不再在 View 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8424902/