【问题标题】:Limit available memory to iOS app in Xcode在 Xcode 中限制 iOS 应用程序的可用内存
【发布时间】:2015-03-01 20:34:43
【问题描述】:

我很好奇在调试时是否可以在 Xcode 中限制 iOS 应用程序的可用内存。我的应用程序能够使用 AVCapture 录制临时视频,我想在录制和处理 didReceiveMemoryWarning 内的异常时测试用户的 iDevice 上是否有足够的内存。谢谢。

编辑:我忘记提及我使用的是实际设备,但我拥有 64GB 版本,因此可能需要一些时间才能达到此限制,我预计最终用户将是拥有 8GB iPhone 的年轻人。

【问题讨论】:

  • 你可以从模拟器的菜单中发送内存消息...但是至于模拟设备的可用内存...你只需要尝试一下
  • 你不能在设备上测试吗?

标签: ios xcode memory exception-handling


【解决方案1】:

如果你想检查可用内存 (didReceiveMemoryWarning) 答案是否定的。iOS 自己确定可用内存。根据 Apple 文档,您需要使用实际设备。

尽管 iOS 模拟器是一个有用的工具,但永远不要让它成为唯一的方法 你测试一个应用程序。因为 iOS Simulator 是在 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 缓存文件夹。因此,手动使其充满非常困难。

【讨论】:

  • 谢谢。我忘了提及我使用的是实际设备,但我拥有 64GB 版本,因此可能需要一些时间才能达到此限制,我预计最终用户将是拥有 8GB iPhone 的年轻人。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 2018-11-03
  • 2014-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
相关资源
最近更新 更多