我的应用程序会定期在文件夹中转储一些内容。我已经使用下面的代码来计算我的应用程序消耗的总内存大小。但我看到它与我从设置\使用中看到的不同。我的代码显示的内存非常少。我无法跟踪我在计算中出错的地方/或者我错过了文件夹路径。
我计算了我的应用程序大小如下:
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];
};
Best Answer-推荐答案 strong>
以上代码返回实际文件大小。设置/使用中显示的值显示了分配的大小。 分配的大小应大于实际大小。
这就是您的计算值与设置/使用值不匹配的原因。
如果您需要访问分配的文件大小,请在 NSURL 类中使用 NSURLTotalFileAllocatedSizeKey。 NSFileManager 类中没有可用的方法/属性来获取 分配的大小 [据我所知]。
请仔细阅读 NSURL 类的文件属性键。
仅供引用:如果您尝试访问 sanboxed 应用主目录中的 /Library/Caches/Snapshot 文件夹,我们将收到权限错误。
这可能对你有帮助。
关于iphone - 计算出的应用程序大小在 iOS 中显示不正确,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/17188322/
|