iOS應用在運行時經常要創建一些文件,不過這些文件要如何存放呢?有沒有什麼要求呢? 由於手機資源空間有限而且考慮到Apple推出的iCloud,我們確實要對創建出的文件按照作用的不同,分出幾種類別出來,並設置文件備份屬性attribute(需iOS5.0.1及以上),從而讓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引入的設置不要備份文件(文件夾也適用)的擴展屬性


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), 0, 0);
10 return result == 0;
11 }


參考資料:http://www.cnblogs.com/BigPolarBear/archive/2012/03/30/2424932.html