是否可以检测iphone可用内存,以便在应用程序运行时它可以提醒用户重新启动,具体取决于内存是否不足?
答案 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;
}