我有一个基于NSDocument的应用程序和一个NSDocumentController子类.我的NSDocument使用文件URL和URL以及使用Web服务的自定义方案.
我使用自定义代码处理大部分加载和保存,包括-saveToURL:ofType:forSaveOperation:completionHandler:
.+autosavesInPlace
回报YES
.
我遇到的问题:启动时不会恢复具有自定义URL方案的文档.具有文件URL方案的文档是 - 保存到文件的常规文档和自动保存的无标题文档.
在打开基于服务器的文档并退出应用程序后,似乎没有在重新启动时调用NSDocument方法.特别是,四个初始化程序都不会被调用:
-reopenDocumentForURL:withContentsOfURL:display:completionHandler:
也不调用NSDocumentController方法.
文件的可恢复状态如何以及何时编码?他们如何以及何时解码?
文档只是声明setAutosavingDelay
在共享文档控制器上设置为> 0但应该在调用之后
[[NSDocumentController sharedDocumentController] setAutosavingDelay:2.0];
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,自动保存似乎不起作用:我既没有看到任何内容~/Library/Autosave Information/
,也没有看到
[[[NSDocumentController sharedDocumentController] currentDocument] autosavedContentsFileURL]
Run Code Online (Sandbox Code Playgroud)
初始化.
请注意,在我的应用程序中,正常加载和保存工作正常(keyedarchivers,我的文档的基于nscoding的类等).
假设我有一个NSDocument应用程序,它支持将文件拖放到其图标上以启动应用程序并打开该文件.我的NSApplicationDelegate已经实现了
- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename
Run Code Online (Sandbox Code Playgroud)
通过文件拖放调用.我希望能够打破并开始调试内部,application:openFile:
但必须从Xcode启动应用程序以使用拖放启动.
这样做有什么好办法?
最新版本的macOS Sierra在"查看"菜单中添加了"显示/隐藏标签栏"菜单项.
它动态地执行此操作.
我的应用程序已经使用MMTabBarView库包含自己的选项卡栏.我宁愿继续使用这个库,因为它使我能够向后兼容选项卡,还能够对选项卡进行一些自定义.
关于删除此菜单项,我在Apple NSDocument或NSDocumentController文档中没有看到任何内容.
有没有人对我如何删除它有任何建议?
注意:我不想简单地禁用它,我希望完全删除它.(或者我想首先没有添加它).
最近,每当我启动我的应用程序时,保存的文档都会导致崩溃。有没有一种方法可以防止基于文档的应用程序打开任何文档,包括新的空白文档或最新的活动文档?我不希望通过使用OSX功能(不在我的应用程序范围内)而是在程序中进行此操作。
我认为应该通过NSDocumentController
某种方式完成此操作,但是我无法弄清楚,也没有运气在其他地方找到答案。
因此,如何告诉OSX应用程序(通过NSDocumentController
)在启动时不要打开任何文档?