xcode – NSDocumentController如何插入我的基于文档的应用程序?

xcode – NSDocumentController如何插入我的基于文档的应用程序?,第1张

概述我正在构建我的第一个严肃的 Cocoa应用程序.它是一个基于文档的应用程序,使用Core Data进行持久存储.使用 Xcode“新项目”模板选项,我的项目开始时使用了几个默认类: > MainMenu.xib(我的应用程序的主菜单) > EventDocument.xib(我的应用程序的主窗口) > EventDocument.h和EventDocument.m(持久文档类) 我从那里采取了设计 我正在构建我的第一个严肃的 Cocoa应用程序.它是一个基于文档的应用程序,使用Core Data进行持久存储.使用 Xcode“新项目”模板选项,我的项目开始时使用了几个默认类:

> MainMenu.xib(我的应用程序的主菜单)
> Eventdocument.xib(我的应用程序的主窗口)
> Eventdocument.h和Eventdocument.m(持久文档类)

我从那里采取了设计,这一切都很好,但是通过another question,我遇到了一个我不知道的Cocoa类NSdocumentController.该类显然提供了用于管理基于文档的应用程序中的文档类的默认逻辑.

我的问题是这个类如何进入我的应用程序 – 如果有的话 – 我是否需要它?此时,我使用Eventdocument类作为一种顶级控制器.它从菜单中选择用户选择(带有iTunes选项的树形视图),调出处理这些选项的不同视图/控制器并传递托管对象上下文.如果NSdocumentController是“走的路”,为什么Apple不会将其作为项目模板的一部分生成?

解决方法 我相信你误解了NSdocumentController的目标,可能是因为它的名字类似于NSWindowController和NSVIEwController.

在Cocoa MVC中,控制器调解视图和模型.在处理windows时,控制器通常是NSWindowController的子类,在视图的情况下,是NSVIEwController的子类.

在基于文档的体系结构中,NSdocument类是表示文档的模型与相应的视图和控制器之间的中介.本质上,它负责基于外部表示重新创建模型,并提供一些附加与模型和视图对应的控制器行为的方法.通常使用两种设计:

> NSdocument子类有效地充当窗口(可能也是视图)控制器 – 例如,通过实现IBActions.这应该适用于简单的应用程序,但它可以很快导致一个膨胀的NSdocument子类,它处理的应用程序超出了应有的范围. documentation说:

The default document-based Application project template does not subclass NSWindowController. You do not need to subclass NSWindowController if you are writing a simple application. However,if you are writing an application with more advanced requirements,you will almost certainly want to do so.

> NSdocument子类创建自定义窗口控制器,后者又实现控制器行为,也可能使用视图控制器.

在许多(大多数?)情况下,不需要NSdocumentController子类 – 应用程序的控制器部分将位于窗口控制器,视图控制器或NSdocument子类中.也就是说,在某些情况下可能需要如documentation所述:

Usually,you should not need to subclass NSdocumentController. Almost anything that can be done by subclassing can be done just as easily by the application’s delegate. However,it is possible to subclass NSdocumentController if you need to.

For example,if you need to customize the Open panel,an NSdocumentController subclass is clearly needed. You can overrIDe the NSdocumentController method runModalOpenPanel:forTypes: to customize the panel or add an accessory vIEw. The adddocument: and removedocument: methods are provIDed for subclassers that want to kNow when documents are opened or closed.

总结

以上是内存溢出为你收集整理的xcode – NSDocumentController如何插入我的基于文档的应用程序?全部内容,希望文章能够帮你解决xcode – NSDocumentController如何插入我的基于文档的应用程序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1006011.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存