状況
iPhoneに実機ビルドしながら開発をしていたら、突然iPhoneから「容量不足」のアラートが。
「ストレージとiCloudの使用状況」の設定を見ると、自分が開発しているアプリが一番上に表示され、「書類とデータ」の項目には数百MB~数GBの容量が…
また、Archiveしたアプリ(TestFlight経由/AdHoc問わず)ではその現象が発生しませんでした。ビルド設定を疑い、Runのビルド設定をDebugからReleaseにしてみても、Runの場合は発生します。
原因
メモリに関する動作をすべてロギングする設定がXcodeにはあります。
メモリリークなどを追いかける際に使用する設定なのですが、このログがアプリの保存領域(tmp)に格納されるようです。
[Edit Scheme...] > Run > [Diagnostics] > Logging > [Malloc Stack]
ここにチェックが入っていると、実機ビルドしたアプリを動かすだけで、端末にどんどんログが吐き出され、容量を圧迫していきます。
tmpの中身をすべて削除するようなコードを試しにアプリに実装してみると、容量が改善することもわかります。
今回、デバッグ時にこのチェックを入れていたため、容量がふくらんでしまっていたため、チェックを外すことで状況が改善しました。
さいごに
通常、デバッグ時のみ発生する現象はビルド設定を疑うところですが、
- ビルド設定(Debug/Release)や最適化レベルを問わず発生する
- Archiveした場合は発生しない
時は、Schemeの不要な項目にチェックが入っていないか確認しましょう。