【问题标题】:Opening large file (200mb) on iPhone?在 iPhone 上打开大文件(200mb)?
【发布时间】:2011-08-18 11:56:52
【问题描述】:

想要打开一个大文本文件然后搜索它的内容。 我将带有 stringWithContentsOfFile 的文件加载到 NSString 中。 每件事都适用于 30mb 的文件。但我担心如果我加载一个我想做的 200mb 文件会发生什么。 完整的 NSString 是否在内存中?如果是这样,它将无法在 iPhone 上运行。 iPhone上有这么大文件的解决方案吗?

【问题讨论】:

  • 您可以使用 sqlite 数据库并使用核心数据进行查询,而不是使用文本文件。它快速高效。
  • 打开文件不需要任何费用...读取和缓冲可以

标签: iphone objective-c memory-management


【解决方案1】:

读取大文件的一个好方法是一次缓冲一小块文件。

不确定您可以使用哪些确切的 API 方法来执行此操作,但对于音频、视频等而言,将少量文件读入内存、对其进行处理并将其从内存中删除是相当标准的做法继续浏览文件。

【讨论】:

  • 在此处查看第二个答案,了解如何执行此操作的一些示例代码:stackoverflow.com/questions/1044334/…
  • 请注意,obj c 文件类是使用您也可以使用的经典 C 文件函数实现的。
【解决方案2】:

由于没有记录限制,因此检查的方法实际上是在目标上对其进行分析。人们也许可以在这里给出他们的限制,但这完全是相对的。此外,良好的内存管理方案和设计将帮助您避免内存不足的问题。

【讨论】:

  • iPhone 4 有 512MB 的 RAM,因此 200MB 几乎是一半。然后你有系统和后台应用程序——它会很紧张。早期的设备没有 512。
  • @Inspire48:是的,这就是我提到没有明确限制的原因。当您分配 10 mb(根据个人经验)时,手机可能会开始嚎叫,但如果您使用文档中建议的技术和这里的几个答案管理得当,您可能仍然可以编写处理大量数据的应用程序。
猜你喜欢
  • 1970-01-01
  • 2015-12-08
  • 1970-01-01
  • 2010-10-13
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
相关资源
最近更新 更多