如何使用iOS模拟器模拟磁盘空间不足情况?

Fla*_*lax 17 iphone ios

使用iOS模拟器测试"磁盘空间不足"情况的实用方法是什么?

sup*_*pik 33

创建一个小磁盘映像:

hdiutil create -size 2m -fs HFS+ /tmp/2meg.dmg
Run Code Online (Sandbox Code Playgroud)

将其安装到模拟器应用程序中的相关目录,例如:

hdiutil attach /tmp/2meg.dmg -mountpoint /Users/.../Library/Developer/CoreSimulator/Devices/.../data/Applications/.../Library/Caches
Run Code Online (Sandbox Code Playgroud)

运行应用程序并执行测试.这也可以在应用程序运行时完成.在这种情况下,您可能不希望将其直接挂载CachesDocuments目录,因为这会隐藏这些文件夹中的当前文件.而是安装到子目录.如果在不更改应用程序中的路径的情况下无法轻松实现这一点,请将映像安装在其他位置并复制数据,然后再将其挂载到非空目录的顶部.

卸载:

hdiutil detach /Users/.../Library/Developer/CoreSimulator/Devi...
Run Code Online (Sandbox Code Playgroud)

但请注意,如果移动安装点,则分离操作将失败.这种情况一直发生,因为Apple每次运行应用程序时都会在iOS 8上重命名模拟器目录.在这种情况下,使用该mount命令查找已挂载的设备,例如/dev/disk3s1 /Users/.../Library/...,然后使用设备名称而不是挂载点卸载磁盘映像:

hdiutil detach disk3s1
Run Code Online (Sandbox Code Playgroud)

  • 当磁盘空间不足时,这是否真的触发iOS运行其逻辑?也就是说,向应用发送警告,从缓存目录中删除文件,等等。 (2认同)