objective-c - 如何判断 NSPanel 是否不再在 View 中?

标签 objective-c cocoa

我正在使用 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/

相关文章:

ios - 核心数据多模型规划

swift - 如何将 NSTextField 值转换为 CGFloat

cocoa - 如何在 NSOutlineView 中禁用取消选择行

objective-c - OS X 辅助功能 - 如何将窗口一直带到最前面?

Objective-C:变量被编译器优化掉

ios - UITableViewCell 约束未更新

objective-c - Mac 创建简单的 dylib?

objective-c - 遇到问题,资源已被修改?

iOS 应用程序在后台运行并在插入联系人时收到通知

objective-c - 使用 NSWorkspace 在浏览器中打开多个 URL