我在Xamarin iOS中使用了文檔選取器。在DocPicker的示例中,他們調用了類似StartAccessingSecurityScopedResource的註釋。Xamarin iOS:爲什麼需要調用StartAccessingSecurityScopedResource並在DocPicker中釋放示例
//重要!您必須先鎖定安全範圍,然後才能 //訪問此文件。
他們爲什麼要鎖定這個文件?它是否阻止在訪問文件時從其他位置修改文件。
我在Xamarin iOS中使用了文檔選取器。在DocPicker的示例中,他們調用了類似StartAccessingSecurityScopedResource的註釋。Xamarin iOS:爲什麼需要調用StartAccessingSecurityScopedResource並在DocPicker中釋放示例
//重要!您必須先鎖定安全範圍,然後才能 //訪問此文件。
他們爲什麼要鎖定這個文件?它是否阻止在訪問文件時從其他位置修改文件。
在iOS(和MacOS沙盒應用程序)中,訪問外部文檔時,如果文檔位於您自己應用程序的沙箱之外,需要由操作系統跟蹤的特殊權限。所以,一旦你有一個指向外部文件NSURL,你居然沒有獲得它,直到你明確地提出要求,因爲在這樣一個安全/資源開銷,
注意:確保你叫StopAccessingSecurityScopedResource
,否則您的應用程序泄漏基於內核的資源(try
/finally
這裏是一個明智的編碼模式)
在iOS系統中,打開或使用UIDocumentPickerViewController也接收安全範圍的網址,移動文檔的應用程序。
要獲得對安全範圍URL的訪問權,您必須調用startAccessingSecurityScopedResource()方法(或其Core Foundation等效項,CFURLStartAccessingSecurityScopedResource(_ :)函數)。對於iOS應用程序,如果您使用UIDocument訪問URL,它會自動爲您管理安全範圍的URL。
什麼兩個設備訪問該文件且二者例如修改的同一文件發生一個添加了一串「我」,另一個刪除「A」會出現問題。 – LittleFunny
@Simon兩款設備?您是否在談論同時由兩種不同設備修改的「雲」資源?哪個雲服務? – SushiHangover
對不起,我對此很新。是的雲中的文件 – LittleFunny