startAccessingSecurityScopedResource()实际上做了什么?

时间:2017-02-11 18:23:53

标签: macos nsurl foundation security-scoped-bookmarks

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

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

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

1 个答案:

答案 0 :(得分:1)

只要您的应用只访问标准位置的文件(下载,音乐) 电影,图片)以及您在应用中添加了必需的entitlements for programmatic file and folder access,您不需要为这些位置存储安全范围的书签。

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

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