应用程序是否拥有自己的最小磁盘空间量?

时间:2012-11-15 23:49:25

标签: ios

  

注意:我不是在问是否有最大值,这个问题一直存在   之前问过,我问的是应用程序是否还有剩余的最小剩余时间。

我的应用程序从互联网下载内容包,我正在调查它在低/无磁盘空间条件下的行为。

包具有时间元素,如果没有空间,则应用程序可以自动删除旧内容,以便为新内容腾出空间。 (包可以过期,因此在没有用户明确删除它们的情况下删除它们是标准行为)。

然而,如果所有磁盘空间在所有应用程序之间共享,并且其他一些应用程序已经吞噬了设备上的所有可用磁盘空间,那么这对我的应用程序来说根本没有任何东西是没有意义的。 这种情况是否可能在另一个应用程序可以消耗我的应用程序的所有内容?或者每个应用程序是否预留了一些空间?

3 个答案:

答案 0 :(得分:1)

应用可以消耗的空间量没有限制。理论上,应用程序可以使用所有可用的磁盘空间。

答案 1 :(得分:0)

AFAIK没有实际限制。我一直在使用一个占地1.6GB的应用程序,没有任何问题。从本质上讲,你可以使用可用的东西,如果其他人是吝啬并占据了所有空间,那么你无能为力。一个好的策略可能是声明“我的应用程序将在磁盘上使用512mb的空间”或类似的东西,然后确保你永远不会超过它。这将让您放心,您的应用程序工作到一个上限。任何移动设备上的经验法则,永远不要假设您有足够的空间用于任何事情,在写入磁盘时始终检查故障,并制定策略来处理它。

此外。如果您想保证您的应用程序始终有足够的空间。选择大小的上限(比如256 MB),在安装和首次运行应用程序时,创建在磁盘上占用大量空间的虚拟文件。然后,在下载有用数据时,将虚拟文件替换为有用的文件,以便您的应用程序始终使用原始数量的保留空间。

我似乎也误解了这个问题。为您的应用保留的最小值是从应用商店全新下载时占用的空间。而已。如果你只有200mb免费而且你试着下载一个300mb的应用程序,它就不会让你。

答案 2 :(得分:0)

在磁盘上写入之前,您可以检查可用磁盘空间量并相应地提醒用户。

-(uint64_t)getFreeDiskspacePrivate
{
uint64_t totalSpace = 0.0f;
uint64_t totalFreeSpace = 0.0f;
NSError *error = nil;  
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error: &error];  

if (dictionary) {  
    NSNumber *fileSystemSizeInBytes = [dictionary objectForKey: NSFileSystemSize];  
    NSNumber *freeFileSystemSizeInBytes = [dictionary objectForKey:NSFileSystemFreeSize];
    totalSpace = [fileSystemSizeInBytes floatValue];
    totalFreeSpace = [freeFileSystemSizeInBytes floatValue];
    //NSLog(@"Memory Capacity of %llu MiB with %llu MiB Free memory available.", ((totalSpace/1024ll)/1024ll), ((totalFreeSpace/1024ll)/1024ll));
} /*else {  
    NSLog(@"Error Obtaining System Memory Info: Domain = %@, Code = %@", [error domain], [error code]);  
}  
*/
return totalFreeSpace;
}