私はiphoneを初めて使用しますが、-(void)deallocメソッド呼び出しがいつ行われるのか知りたいです。オブジェクトを解放するために使用されることは知っていますが、deallocメソッドを使用して任意の種類のオブジェクトを解放できますか?そして、このメソッドを追加する必要があり、dealoocメソッドで[supeddealloc]を書くのはなぜですか?
あなたの意見を共有します。
私はiphoneを初めて使用しますが、-(void)deallocメソッド呼び出しがいつ行われるのか知りたいです。オブジェクトを解放するために使用されることは知っていますが、deallocメソッドを使用して任意の種類のオブジェクトを解放できますか?そして、このメソッドを追加する必要があり、dealoocメソッドで[supeddealloc]を書くのはなぜですか?
あなたの意見を共有します。
これがAPPLEのドキュメントからの直接の説明です
NSObjectクラスは、オブジェクトに所有者がなく、そのメモリが再利用されるときに自動的に呼び出されるメソッド、deallocを定義します。Cocoaの用語では、「解放」または「割り当て解除」されます。
重要
別のオブジェクトのdeallocメソッドを直接呼び出さないでください。
これが私たちが呼ぶ理由の答え[super dealloc]
です?
実装の最後にスーパークラスの実装を呼び出す必要があります。システムリソースの管理をオブジェクトの存続期間に結び付けないでください
アプリケーションが終了すると、オブジェクトにdeallocメッセージが送信されない場合があります。プロセスのメモリは終了時に自動的にクリアされるため、すべてのメモリ管理メソッドを呼び出すよりも、オペレーティングシステムにリソースのクリーンアップを許可する方が効率的です。
直接deallocメッセージを送信することはありません。代わりに、オブジェクトのdeallocメソッドは、リリースNSObjectプロトコルメソッドを介して間接的に呼び出されます(リリースメッセージの結果、レシーバーの保持カウントが0になる場合)。これらのメソッドの使用の詳細については、 『メモリ管理プログラミングガイド』を参照してください。
サブクラスは、独自のバージョンのdeallocを実装して、オブジェクトによって消費される追加のメモリを解放できるようにする必要があります。たとえば、データ用に動的に割り当てられたストレージや、割り当て解除されたオブジェクトが所有するオブジェクトインスタンス変数などです。クラス固有の割り当て解除を実行した後、サブクラスメソッドは、次のメッセージを介してスーパークラスバージョンのdeallocを組み込む必要があります。
割り当てられたオブジェクト、コピーしたオブジェクト、または保持したオブジェクトをリリースできます。これは簡単に理解できます。割り当てられていないオブジェクトを解放することはできません。つまり、iOSがメモリで使用されなくなったことを検出する自動解放オブジェクトです。そのとき、自動解放プールは、それらのオブジェクトがメモリから自動的に解放されたときにドレインします。
また、オブジェクト保持カウントがゼロになったときに呼び出されるオブジェクトdeallocメソッド。