我是基于文档的应用程序的新手,因此我可能错过了一些基本的东西。我编写了一个基于文档的应用程序,它使用子类 NSWindowController 作为接口,使用子类 NSDocument 作为模型。根据文档,我在 makeWindowControllers 中初始化了 windowController 并加载了它的 xib。在界面生成器中,xib 将我的 windowController 子类设置为文件的所有者。在窗口中的视图中,我有一个 NSOutlineView 的子类,并且 NSOutlineView 数据源和委托也在 nib 中引用并通过 IBOutlets 连接到 windowController。
根据文档,我应该能够通过 [windowController 文档] 从 OutlineView 数据源访问文档。但是,从 OutlineView 数据源引用 windowController(通过 IBOutlet)给了我文档!
这导致 OutlineView 数据源(它是 windowController 的 xib 中 NSObject 的子类)中的一些相当丑陋的代码来获取文档,例如:
-(MyDocument *)myDocument {
MyDocument *theDocument = (MyDocument *)myWindowController;
return theDocument;
}
头文件中的 IBOutlet 将 myWindowController 引用为:
IBOutlet MyWindowController *myWindowController
简而言之 - 为什么在这种情况下连接到 windowController 的 IBOutlet 会直接让我获取文档?上面的代码有效,但似乎不应该。
编辑:澄清