運行中的iOS應用創建的文件們


iOS應用在運行時經常要創建一些文件,不過這些文件要如何存放呢?有沒有什么要求呢?

由於手機資源空間有限而且考慮到Apple推出的iCloud,我們確實要對創建出的文件按照作用的不同,分出幾種類別出來,並設置文件備份屬性attribute(需iOS5.0.1及以上),從而讓iOS系統更好地管理和對待我們所創建的文件。

 

iOS的文件分類、存放路徑及文件屬性

 

關鍵數據

內容:用戶創建的數據文件,無法在刪除后自動重新創建,且會

路徑:主目錄/Documents

屬性:不要設置"不備份"

管理:iOS系統即時遇到存儲空間不足的情況下,也不會清除,同時會備份到iTunes或iCloud中  

緩存數據 

內容:可用於離線環境,可被重復下載重復生成,即時在離線時缺失,應用本身也可以正常運行

路徑:主目錄/Library/Caches

屬性:默認

管理:在存儲空間不足的情況下,會清空, 並且不會被自動備份到iTunes和iCloud中

臨時數據

內容:應用運行時,為完成某個內部操作臨時生成的文件

路徑:主目錄/tmp

屬性:默認

管理:隨時可能被iOS系統清除,且不會自動備份到iTunes和iCloud,盡量在文件不再使用時,應用自己情況,避免對用戶設備空間的浪費 

離線數據

內容:與緩存數據類似,可以被重新下載和重建,但是用戶往往希望在離線時數據依然能夠托托地存在着

目錄:主目錄/Documents  或 主目錄/Library/自定義的文件夾

屬性:放於Documents下不需設置,放在自定義文件夾中需設置"不備份" 

管理:與關鍵數據類似,即時在存儲空間不足的情況下也不會清楚,應用自己應該清除已經不再使用的文件,以免浪費用戶設備空間

 

從iOS5.0.1引入的設置不要備份文件(文件夾也適用)的擴展屬性


 1 #include <sys/xattr.h>
 2 - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
 3 {
 4      const  char* filePath = [[URL path] fileSystemRepresentation];
 5     
 6      const  char* attrName =  " com.apple.MobileBackup ";
 7     u_int8_t attrValue =  1;
 8     
 9      int result = setxattr(filePath, attrName, &attrValue,  sizeof(attrValue),  00);
10      return result ==  0;  

11 }


 


參考資料:https://developer.apple.com/library/ios/#qa/qa1719/index.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM