我不太确定基于文档的应用程序是如何工作的。我在 Mainmenu.xib 中为 NSObject 创建了一些操作。当用户单击“文件>新建”时,会调用其中一个:
-(IBAction) newDocument:(id)sender{
Document* newDoc =[[Document alloc] init];
[[NSDocumentController sharedDocumentController]addDocument:newDoc];
[newDoc addWindowController: [[NSWindowController alloc] initWithWindowNibName:[newDoc windowNibName] owner:newDoc]];
[newDoc showWindows];
}
我在 openDocument:(id) sender 操作中也有此代码,它执行相同但当然加载数据以定义应用程序工作区。
如果我运行该应用程序,它会显示一个空白文档而无需调用 newDocument 操作。我不知道如何停止默认的空白文档并设置 newDocument: 被调用。然后,如果我也做 openDocument: (所以我有两个文档,一个空白,一个没有)并且我对第二个文档进行一些操作,它也会在第一个空白文档中复制。我仔细检查了代表、文件所有者,以及 - (void)windowDidBecomeMain:(NSNotification *) 通知是否返回不同的指针并且一切似乎都正常。可能我不了解基于文档的应用程序工作流程,但我已经阅读了 Apple 指南和其他说明。我想念什么?