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