我正在制作沙盒Mac应用,我使用NSOpenPanel获取文件URL,并将其作为安全范围的书签保存到UserDefaults。当我退出并重新启动应用程序时,我可以再次将该数据块解析为URL。
文档说我应该调用startAccessingSecurityScopedResource()
,并检查其返回值。 (当我打电话时,它会返回true
。)但如果我不打电话,我仍然有一个已解析的网址,而且我似乎仍然有权访问它。
startAccessingSecurityScopedResource()
实际上做了什么?如果我不打电话,有什么不好的事情会发生吗?
答案 0 :(得分:1)
只要您的应用只访问标准位置的文件(下载,音乐) 电影,图片)以及您在应用中添加了必需的entitlements for programmatic file and folder access,您不需要为这些位置存储安全范围的书签。
但是对于应用程序重新启动后应该仍然可以访问的其他位置,您应该存储安全范围的书签并在访问之前调用startAccessingSecurityScopedResource()
。如果您跳过该步骤,则在尝试访问该文件时会立即收到异常。
startAccessingSecurityScopedResource()
使安全范围的书签资源可用于您应用的沙盒,从而授予您访问该资源的权限。