【问题标题】:iOS - Reserve a minimum amount of free disk space for an appiOS - 为应用程序保留最少的可用磁盘空间
【发布时间】:2015-05-07 12:57:49
【问题描述】:

我的应用必须确保始终有最小数量的可用磁盘空间(可能是 5-10 MB)才能正常运行。我必须将重要数据保存到文件中,否则一切都会被破坏。

主要问题是:如果用户下载了我的应用程序,并且他的可用磁盘空间正好是应用程序所需的数量(没有我在第一次启动时创建的数据)

当他现在启动应用程序时,我尝试进行一些初始设置 - 这里我必须写入大约 2-3 MB 的文件,并且这个空间必须是空闲的。

我能做些什么来实现这个目标?

【问题讨论】:

  • 你想在什么时候检查这个?在应用程序启动时?为什么不在第一个空间运行时显示此应用程序磁盘空间不足的错误消息?您不能真正保留内存,您可以写入/分配它,以便其他应用程序无法使用该部分。
  • 在Android中,如果设备空间不足,应用程序将不会安装(将被下载)。这是平台的一个功能,我想 iOS 也会做类似的事情。
  • 但 App Store 只会显示我的应用安装它所需的磁盘空间量。在第一次启动时,我需要向磁盘写入额外的 2-3 MB,App Store 将允许下载,但随后 2-3 MB 不存在。当然,我可以显示一条错误消息。我只是想知道是否可以将所需的磁盘空间量设置为高于实际值。
  • 您能否在您的应用中包含 3MB 的垃圾文件,这些文件稍后会被删除?
  • @aandreev,不,你不能。您可以在下载时包含的唯一内容是应用程序包中的内容,并且在 iOS 中是只读的。

标签: ios objective-c diskspace


【解决方案1】:

你可以做两件事:

首先,当您的应用程序启动时,您可以使用NSFileManager.attributesForFilesystemofPath: 找出可用空间。如果空间量很低(而 5 MB 的可用空间真的很低,您可以警告用户,甚至可能拒绝在您的应用中启动需要此可用空间的操作。

其次,您可以创建一个临时文件。如果您知道自己需要 5MB 的存储空间,那么也许您可以分配一个 5MB 的文件并将该文件用作您的存储空间。

您没有指定需要在磁盘上存储什么,但如果它是一个文件,那么您可以将这些数据写入您的 5MB 暂存文件,而不是打开一个新文件。

这需要一些额外的簿记,但您的数据确实有保证的空间。

【讨论】:

  • 我也想过,但希望有更好的解决方案。谢谢!我有一些文件要写入磁盘(并确保它总是可能的)。你是说我可以创建一个 5MB 的容器文件然后写入这个东西吗?所以如果我需要额外的内存,我就不必删除我的虚拟文件了吗?
【解决方案2】:

简而言之,你不能。您需要编写代码以进行初始启动,检查是否有足够的磁盘空间来进行初始设置,如果没有则显示错误。我之前没有尝试在 iOS 上执行此操作,所以我不确定沙盒允许您在我的脑海中做什么。我必须阅读 iOS 文件系统文档。我建议你这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多