首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于macOS文档的应用程序是如何启动的?

基于macOS文档的应用程序是如何启动的?
EN

Stack Overflow用户
提问于 2020-02-11 19:34:58
回答 1查看 360关注 0票数 0

我正在学习macOS应用程序开发的基于文档的应用程序架构,但对此感到困惑。

我用Xcode创建了一个基于文档的应用程序。应用程序模板创建了一个简单的基于文档的应用程序。它可以运行,并在运行时自动创建一个新文档。

我的问题是:这个应用程序如何启动文档架构?我认为应该有一些类似以下的代码:

代码语言:javascript
复制
NSDocumentController *docController;
docController = [NSDocumentController sharedDocumentController];
[docController newDocument:self];

但我在创建的应用程序中找不到任何这样的代码。app委托中的-(空)applicationDidFinishLaunching:方法为空。此外,在主nib文件中没有任何NSDocumentController对象。

那么,这个应用程序如何知道它应该使用文档架构,初始化一个NSDocumentController,然后创建一个新文档呢?

EN

回答 1

Stack Overflow用户

发布于 2020-02-12 10:16:18

这个应用程序怎么知道它应该使用文档架构,初始化一个NSDocumentController,然后创建一个新文档?

我不清楚Xcode的内部工作原理,但似乎在应用程序的info.plist中,CocoaNSDocumentClass必须设置为Document,Role必须设置为Editor (或Viewer、None或Shell)才能创建文档。在您的演示中,尝试删除plist中的这两行中的一行或两行,并查看应用程序是否仍然有效。这两个设置都位于文档类型的第二级。在我的经验中,删除这两行中的任何一行都会破坏应用程序,并恢复正确的设置来修复它。在以编程方式创建的基于文档的应用程序(无nib)中,并使用终端进行编译时,当我进入包中并在删除上面提到的一个或其他info.plist设置后运行可执行文件时,会生成以下错误。

代码语言:javascript
复制
2020-02-11 19:31:48.294 nsdoc_demo[1606:658926] NSDocumentController Info.plist warning: The values of CFBundleTypeRole entries must be 'Editor', 'Viewer', 'None', or 'Shell'.

2020-02-11 19:38:46.355 nsdoc_demo[1748:680819] -[NSWindowController loadWindow]: failed to load window nib file 'Document'.

未设置CocoaNSDocumentClass时,Xcode (使用Document.xib)会生成以下错误:

代码语言:javascript
复制
2020-02-11 16:22:03.022602-0600 docExpt[1166:428702] The DocumentType type doesn't map to any NSDocumentClass.

根据我的经验,源代码可能没问题,但如果info.plist设置不正确,基于文档的应用程序将无法正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60167944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档