iOSで大きなデータを処理するアプリにおけるメモリ管理の注意点
お世話になっております。漠然とした質問になってしまい恐縮ですが、次のような問題の相談をチームの人から受けて返答に窮しております。
「100MBを超えるデータをメモリに持つと、iOSがプロセスをすぐにkillする」
こうなることを防ぐために自分で調べた結果、次のような対応をすればよいらしいとわかりました。
- UIViewControllerのdidReceiveMemoryWarningメソッド内で適切に不要なビューを開放する(nilを代入する?)
- AppDelegateのapplicationDidReceiveMemoryWarning内でモデルなどVC以外で使用しているメモリのうち不要なものを開放する
- UIApplicationDidReceiveMemoryWarningNotification通知を受け取り適切に対処する
参考:メモリ効率の向上に 関するガイドライン(https://developer.apple.com/jp/documentation/MemoryUsage.pdf)
また、GitHubでソースコードを見られるアプリのコードを見たのですが、
あまりメモリ管理が原因でiOSからkillされる状況に対処してあるアプリは多くありませんでした。
質問点
これ以外の点でiOS側からプロセスを止められないためにすべき対策があればご指摘くださると幸いです。今までiOSのプログラムを書いていて、あまりそのようなケースにあたったことがなく、また入門書などでもあまり見ない話題です。
なお、その相談してきた人の作っているアプリはカメラから画像を取得して処理するものです。画像のマッチングなどに多量のデータをメモリに持つ必要があるとのことです。
よろしくおねがいします。