2013-06-19 58 views
2

我的應用程序定期在文檔文件夾中存儲了一些內容。我已經使用下面的代碼來計算我的總應用程序消耗的內存大小。但我看到它與我從設置\使用中看到的不同。我的代碼顯示的內存很少。我無法跟蹤計算出錯的地方/或者我錯過了文件夾路徑。計算出的應用尺寸在iOS中未正確顯示

我算我的應用程序的大小如下:

NSString *folderPath = [[NSBundle mainBundle] bundlePath]; 
NSArray *filesArray = [[NSFileManager defaultManager]  subpathsOfDirectoryAtPath:folderPath error:nil]; 
NSEnumerator *filesEnumerator = [filesArray objectEnumerator]; 
NSString *fileName; 
unsigned long long int fileSize = 0; 

while (fileName = [filesEnumerator nextObject]) { 
NSDictionary *fileDictionary = [[NSFileManager defaultManager] attributesOfItemAtPath: [folderPath stringByAppendingPathComponent:fileName] error:nil]; 
fileSize += [fileDictionary fileSize]; 
}; 
+0

您是否正在考慮temp/caches/library中的內容? – Wain

+0

@Wain ......./var/mobile/Applications/81D-D8348/Documents/ – Daisy

+0

因此,根據您使用的是什麼,告訴用戶可以刪除多少數據是不好的,並且iOS會告訴用戶刪除應用程序將節省多少? – Wain

回答

1

上面的代碼返回實際文件大小。設置/使用中顯示的值顯示分配的大小分配的大小應大於實際大小。

這就是爲什麼你的計算值和設置/使用值不匹配。

如果您需要訪問文件的分配大小,請在NSURL類中使用NSURLTotalFileAllocatedSizeKey。有沒有方法/財產NSFileManager類獲得分配的大小 [據我所知]。

請詳細說明NSURL類的文件屬性鍵

供參考:如果您嘗試訪問sanboxed應用的主目錄中的/Library/Caches/Snapshot文件夾,我們將收到權限錯誤。

這可能會對您有所幫助。