「Received memory warning.」って困りますよね。どこがやねん、と。
今回の場合、UITableViewをTwitterのように20件ずつ読み込んでいくスタイルのものを作っているときに起きました。
80件以上読み込んだ時点で70MBもメモリを使用しており、それくらいから「Received memory warning.」をコンソールに吐き出しまくるようになりました。
【対処〜そもそも〜】
1.オブジェクトが解放されていない→nilを代入してあげる。
シングルトンで作ったオブジェクトのプロパティにaddObjectとかしちゃうともりもり肥大するのでこれらは厄介です。
- didReceiveMemoryWorningメソッド内で解放してあげましょう。
2.マルチスレッドで書いたところが解放されていない or 循環参照してる
意識が高くなってくると調子に乗ってマルチスレッドとかブロック構文とか書きたくなっちゃいますよね。でもたくさん使うと当然メモリをいっぱい使うことになります。
→でも、諸悪の根源がどのオブジェクトや処理なのかわからないとどうしようもないよね。。。
【対処①】
「Analyze」でビルドする。
→初歩的にメモリリークしそうなところを掘り出してくれます。- viewDidAppearとかよくなります。
【対処②】
「Profile」でビルドする。
→勝手にInstrumentsが立ち上がります。あとはInstrumentsにおまかせ。
【対処③】
Instrumentsで徹底抗戦
imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (ここに画像のURL)
最終更新:2014年12月09日 16:20