Xamarin iOS:为什么需要调用StartAccessingSecurityScopedResource并在Doc



我在Xamarin iOS中使用文档选择器。在DocPicker的示例中,他们调用了StartAccessingSecurityScopedResource之类的东西,上面有注释。

//重要!您必须锁定安全范围,然后才能//访问该文件

为什么他们要锁定这个文件?当访问文件时,它是否阻止文件从其他地方修改?

在iOS(和MacOS沙盒应用)中,访问一个外部文档,一个在你自己的应用沙盒之外的文档,需要被操作系统跟踪的特殊权限。因此,一旦你有一个指向外部文件的NSUrl,你实际上无法访问它,直到你明确请求它,因为这样做有安全/资源开销,

注意:确保你调用StopAccessingSecurityScopedResource,否则你的应用程序泄漏基于内核的资源(try/finally是一个明智的编码模式在这里)

在iOS中,使用UIDocumentPickerViewController打开或移动文档的应用程序也会接收安全作用域的url。

要访问安全作用域的URL,您必须调用startAccessingSecurityScopedResource()方法(或其核心基础等效,CFURLStartAccessingSecurityScopedResource(_:)函数)。对于iOS应用,如果你使用uiddocument访问URL,它会自动为你管理安全范围的URL。

Ref: Security-Scoped URLs

相关内容

  • 没有找到相关文章

最新更新