##はじめに
面倒なのであまりやらないんですが、ストレージの空き容量が無くなった時にアプリが動いてて、どうなるのかなーって思いますよね。
まあOSが不安定になったり、動かなくなったりするので、アプリ側はあまり心配もしてないんですが、自前アプリで動作確認してみました。
スマホはフラッシュメモリーなので、長く使ってると、ライトエラーも起きますしねえ。
##結果
###android 11エミュレータで試しました。
- プリファレンスへ出力
- 消えたりしなかった。書き込もうとした分は書き込めてなかった。
- ファイルへ出力
- ファイル内容は丸っと消えた。途中まで書き込めたりもするだろうね、きっと。試してないけど。対策すればいいんだけど面倒だね。
- sqliteへ出力
- DBファイルは無事。書き込めないので例外が発生して、落ちた。
###iPhone XRで試しました。
androidと違い、空き容量200MBぐらいでダメになりました。設定のiPhoneストレージで確認したので、使用セクターの使ってない部分の合計が200MB近いとかなのかな
- NSUserDefaultsへ出力
- 消えたりしなかった。書き込もうとした分は反映されなかったと思う。ごめんちょっと記憶が曖昧
- ファイルへ出力
- writeToFile:atomically:をYES指定では当然問題なし。[NSKeyedArchiver archiveRootObject:toFile:]も問題なし。他の方法はきっと問題あり。
- sqliteへ出力
- DBファイルは無事。書き込めないけど。
##終わりに
以上、自社アプリそのままで、試せる範囲で試しました。
試してないけど、空き容量ありでのライトエラーでもきっと同じ結果。
自社androidアプリ、ファイル出力のが丸っと消えてたので、対策はした。まあ一時ファイルに保存して、成功したらオリジナルを削除して、リネームするのみ。