通常nil
、セッターを介して割り当てることにより、プライベート プロパティをアンロードします (例: self.propertyName = nil
)。または、 release を呼び出した後に ivar を nil に設定することもできます[_propertyName release]; _propertyName = nil;
が、前者の方が望ましいです。
このdidReceiveMemoryWarning
メソッドは、メモリ不足の状況が発生したときに呼び出されます。現在表示されているUIを担当するビューコントローラーを含む、すべてのビューコントローラーで呼び出されます!
したがって、呼び出しを受け取ったときに任意にデータをアンロードすることはできませんdidReceiveMemoryWarning
。現在ディスプレイに表示されている場合、View Controller はそのデータを必要とする可能性があります。
一般的な原則として、didReceiveMemoryWarning
はメモリを解放するのに役立つリソースはすべて削除できますが、すぐに必要とされないリソースのみを削除できます。たとえば、OpenGL ゲームでは、現在ディスプレイに表示されているテクスチャをアンロードしません。ただし、私の最後の段落を参照してください。
通常、必要なときにリソースがロードされていることを確認し、そうでない場合はロードすることで、リソースをリロードします。
通常サイズの単一の文字列などの小さなリソースを解放/解放する価値はありません。かなりの量のメモリを占有するアイテムに集中する必要があります。
舞台裏でのメモリ管理の最近の進歩により、最近では実際にデータをアンロードする必要が少なくなりました。オペレーティング システムは、圧縮されていない画像データなどを舞台裏でアンロードおよび再ロードできます。
Hot Licks が言及しているように、シミュレーターにはメモリ警告をシミュレートするオプションがあります。アプリのさまざまなポイントでこのメモリ警告をトリガーして、アプリの動作を確認する価値があります。