Received memory warning.対策メモ

Received memory warningに泣かされていたが、 あらかた修正できたので、修正ポイントを備忘のために箇条書きしておく。

  • Grand Central DispatchのQueueはARCでは解放してくれないので明示的にreleaseしないといけない
  • imageViewを解放する際は、imageView = nilだけではなくimageView.image = nilもしておかないといけない
  • UIScrollViewでページングしているとき、見えていないページはremoveFromSuperViewしておかないといけない
  • CGImageRef、CGImageContextもARCは解放してくれないのでこちらも明示的にreleaseしないといけない
  • どれだけ厳密にメモリ管理しても何ともならない場合(instrumentsで表示しても使用メモリが1MB以下の場合)は、 他のアプリが膨大にリークさせていてその影響を受けている可能性が高いので、端末を再起動させて試してみること。

何がめんどくさいって、どこで発生しているのかXCodeが表示してくれない上に、 突然クラッシュするから原因の特定が難しいんだよなぁこれ。 マルチスレッドで動いている場合は特に・・・

Written on January 31, 2013