【发布时间】:2012-08-02 17:16:57
【问题描述】:
我希望能够在 Cocoa 应用程序中创建多个窗口实例。因此,我创建了一个 NSWindowController 和关联的 XIB。在我的应用程序委托中,我有以下代码:
- (IBAction)newWindow:(id)sender
{
MyWindowController *wc = [[MyWindowController alloc]
initWithWindowNibName:@"MyWindow"];
[self.windowControllers addObject:wc];
[wc showWindow:self];
}
我必须在某处保留一个指向窗口控制器的指针,否则 ARC 会释放它。我发现一个常见的解决方案是将其添加到可变数组中。但是,如果窗口稍后关闭,则引用仍会在数组中,因此不会被释放。
当窗口关闭时,从数组中移除窗口控制器的最佳方法是什么?
【问题讨论】:
标签: objective-c cocoa memory-management nsmutablearray nswindowcontroller