检测iphone可用内存

时间:2011-01-09 03:20:40

标签: iphone

是否可以检测iphone可用内存,以便在应用程序运行时它可以提醒用户重新启动,具体取决于内存是否不足?

3 个答案:

答案 0 :(得分:8)

为什么要强制用户重启手机?这是一个糟糕的主意。 如果当您的应用尝试分配某些内存时设备的内存已满,则操作系统将从内存中转储其他应用程序,直到您的内容和基本服务全部留下。然后你会收到一个记忆警告。此时只有您的应用程序和基本服务正在运行。重新启动设备无法解决此问题。

答案 1 :(得分:2)

在iPhone上,如果内存不足,您的视图将会收到-(void) UIViewController:didReceiveMemoryWarning,这样就可以清除为应用程序释放更多内存所需的任何缓存。如果没有足够的先验可用内存,那么最好这样做而不是拒绝启动。实际上检测可用内存量会很棘手,因为虽然您可能能够获得允许进程分配的最大内存量,但malloc和app框架将使用一些内存。 / p>

PS。强制用户重新启动是一种糟糕的用户体验,如果内存不足,您的应用程序将自动终止,因此没有充分的理由强迫用户重新启动。

答案 2 :(得分:0)

我不太清楚你在寻找什么内存:RAM或磁盘。但是下面的代码应该可以帮助您获得所需的内容。忽略NSString *作为返回值。它们的目的是为了便于打印。

- (NSString*) totalMemory
{
    NSString* v;
    v = [NSString stringWithFormat:@"%d", [[UIDevice currentDevice] totalMemory]];
    return v;
}


- (NSString*) userMemory
{
    NSString* value;
    value = [NSString stringWithFormat:@"%d", [[UIDevice currentDevice] userMemory]];
    return value;
}


- (NSString*) freeMemory
{
    NSString* value;
    value = [NSString stringWithFormat:@"%d", [UIDevice freeMemory]];
    return value;
}


- (NSString*) totalDiskSpace
{
    NSNumber* totDiskSpace= [[UIDevice currentDevice] totalDiskSpace];
    NSString* value = [totDiskSpace stringValue];
    return value;
}


- (NSString*) freeDiskSpace
{
    NSNumber* theFreeDiskSpace= [[UIDevice currentDevice] freeDiskSpace];
    NSString* value = [theFreeDiskSpace stringValue];
    return value;
}
相关问题