12

我正在制作一个沙盒 Mac 应用程序,我使用 NSOpenPanel 获取文件 URL,并将其作为安全范围的书签保存到 UserDefaults。当我退出并重新启动应用程序时,我可以再次将该数据块解析为 URL。

文档说我应该调用startAccessingSecurityScopedResource(),并检查它的返回值。(true当我调用它时它会返回。)但如果我不调用它,我仍然有一个解析的 URL,而且我似乎仍然有权访问它。

实际上是做什么的startAccessingSecurityScopedResource()?如果我不打电话,会有什么不好的事情发生吗?

4

1 回答 1

5

只要您的应用程序仅访问标准位置(下载、音乐电影、图片)中的文件,并且您在应用程序中包含了程序化文件和文件夹访问所需的权利,您就不需要为这些位置存储安全范围的书签。

但是对于在应用程序重新启动后应该仍然可以访问的其他位置,您应该存储安全范围的书签并startAccessingSecurityScopedResource()在访问之前调用。如果您跳过该步骤,您将在尝试访问该文件时立即收到异常。

startAccessingSecurityScopedResource()使安全范围书签的资源可用于您的应用程序的沙箱,从而授予您对该资源的访问权限。

于 2018-03-09T14:35:51.367 回答