我很好奇是否可以在调试时将可用内存限制在Xcode中的iOS应用程序中。我的应用程序能够使用AVCapture记录临时视频,我想测试用户的iDevice上是否有足够的内存,同时记录并处理didReceiveMemoryWarning
内的异常。感谢。
答案 0 :(得分:0)
如果你想检查可用的Ram(didReceiveMemoryWarning)答案是否定的,iOS确定自己可用的内存。根据Apple文档,您需要使用实际设备。
尽管iOS模拟器是一个有用的工具,但永远不要让它成为唯一的方法 你测试一个应用程序。因为iOS模拟器是在Mac上运行的应用程序,所以它 可以访问计算机的内存,这比内存要大得多 在设备上找到的内存。由于内存增加,iOS 模拟器不是对应用程序内存使用情况的准确测试。为了这 同样的原因,总是测试应用程序用户界面的性能 在设备上。在iOS模拟器中,您的应用程序的用户界面可能会出现 比在设备上运行更快,更流畅。
但是,如果您想检查设备上的可用空间 - 可以完成!
-(uint64_t)getFreeDiskspace {
uint64_t totalSpace = 0;
uint64_t totalFreeSpace = 0;
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 unsignedLongLongValue];
totalFreeSpace = [freeFileSystemSizeInBytes unsignedLongLongValue];
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;
}
但请记住,当系统达到某个可用空间点时,iOS清理自身的iOS缓存文件夹。因此,手动填充它非常困难。