如何判断NSPanel是否已不再存在?

时间:2011-12-08 01:04:56

标签: objective-c cocoa

我正在使用NSPanel来显示应用统计信息。当App Delegate调用computeStats时,它会尝试检查NSPanel是否为Visual。现在,应用程序启动时未加载NSPanel。它要求用户从命令中“打开”它。然后显示NSPanel。

-(IBAction)viewStats:(id)sender
{
    [self.statsPanel makeKeyAndOrderFront:self];
}

现在,如果用户关闭了stats面板,那么computeStats方法会检查它是否可见,只有当它可见时,它才会使用stats数据更新NSTextFields。

-(void)computeStats
{
    if ([self.statsPanel isVisible])
    {
        [self.minLabel setDoubleValue:min];
        [self.medLabel setDoubleValue:med];
        [self.avgLabel setDoubleValue:avg];
        [self.maxLabel setDoubleValue:max];
    }
}

然而,此操作失败(与EXC_BAD_ACCESS崩溃) 后,用户打开然后关闭NSPanel。就好像面板仍然可见,即使在用户关闭它之后也是如此。

1 个答案:

答案 0 :(得分:1)

尝试

[self.statsPanel setReleasedWhenClosed:NO];

首次显示统计信息面板时。