窗口关闭时,从NSMutableArray中删除NSWindowController

时间:2012-08-02 17:16:57

标签: objective-c cocoa memory-management nsmutablearray nswindowcontroller

我希望能够在Cocoa应用程序中创建窗口的多个实例。因此我创建了一个NSWindowController和相关的XIB。在我的应用程序委托中,我有以下代码:

- (IBAction)newWindow:(id)sender
{
    MyWindowController *wc = [[MyWindowController alloc]
            initWithWindowNibName:@"MyWindow"];
    [self.windowControllers addObject:wc];
    [wc showWindow:self];
}

我必须在某个地方保留一个指向窗口控制器的指针,因为ARC会以其他方式取消它。我发现一个常见的解决方案是将它添加到一个可变数组中。但是,如果稍后关闭窗口,则引用仍将在数组中,因此不会被释放。

窗口关闭时,从窗体中删除窗口控制器的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

您可以使用(BOOL)windowShouldClose:(id)sender的{​​{1}}实例方法。

我在文档中找不到它,但请先尝试使用NSWindowDelegate

请参阅here