【发布时间】:2012-02-06 02:52:17
【问题描述】:
我正在编写一个基于文档的应用程序,其中有一个用户打开的项目文件和许多相关的源文件,我希望在同一个窗口中编辑所有这些文件。我怎样才能在NSDocument 架构中做到这一点?具体来说,如何创建多个NSDocuments 作为与项目文件关联的NSDocument 的子级,然后在一个窗口控制器中显示这些。
之前有人问过这个问题(例如Multiple Documents in a Single Window in Cocoa),但答案建议在文档架构之外工作,最近的 App Store 规则更改要求所有应用程序都使用沙盒,这要求所有 IO通过 NSDocument。
【问题讨论】:
-
我不明白为什么你不能在文档架构之外工作;
NSDocument沙盒和其他 I/O 怎么不是?您将不得不在文档架构之外工作,因为它不支持您想要的东西(即它支持一个带有一个或多个窗口的文档)。 -
在即将实施的沙盒系统下,当您的应用程序中打开一个文档时,内核会将其添加到您的应用程序可以访问的文件或目录的白名单中。无论 UNIX 文件权限如何,都无法访问不在此白名单中的任何文件或目录。
NSDocument不需要向白名单添加内容,但这是(据我所知)将此条目保留在白名单中的唯一方法,直到下次启动应用程序时(应用程序预计会重新打开)文件)。我不确定是否有其他方法可以做到这一点,似乎应该有。
标签: macos cocoa nsdocument