我有一个使用自动引用计数并且不使用核心数据(不是基于文档)的 Cocoa 应用程序,我希望能够创建我在 nib 文件中定义的窗口的多个实例。
我目前在我的 AppDelegate 中有这个:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
// for slight performance bump, we assume that users usually have 1 session open.
sessionWindowControllers = [[NSMutableArray alloc] initWithCapacity:1];
}
- (void) awakeFromNib {
// on start, we create a new window
[self newSessionWindow:nil];
}
- (IBAction)newSessionWindow:(id)sender {
SessionWindowController *session = [[SessionWindowController alloc] initWithWindowNibName:@"SessionWindow"];
//add it to the array of controllers
[sessionWindowControllers addObject:session];
[session showWindow:self];
}
SessionWindowController 是 NSWindowController 的子类。但是当我运行它时,我得到了运行时错误
LayoutManagement[30415] : kCGErrorIllegalArgument: _CGSFindSharedWindow: WID 11845 Jun 8 18:18:05 system-process LayoutManagement[30415] : kCGErrorFailure: 设置断点@CGErrorBreakpoint() 以在记录错误时捕获错误。6 月 8 日 18:18:05 系统进程 LayoutManagement[30415]:kCGErrorIllegalArgument:CGSOrderFrontConditionally:无效窗口
使用 NSMutableArray 是管理多个窗口的好方法,还是有更好的设计模式?谢谢!