私はクラスAudioManager
のメンバーがAudioBufferList *
であります。 (これはCoreAudio
フレームワークで宣言された構造体です)。 AudioBufferList
はNSObject
ではないので、私はそれを保持することができませんので、私はそれを解放しなければなりません(私が間違っていれば私を修正してください)。Objective-Cオブジェクトでmalloc/freeを使用
私の質問は、それを解放する「正しい」場所はどこですか?現在私はAudioManager
のdealloc
メソッドでそれをやっています。私が正しく理解している場合、メッセージがAudioManager
のインスタンスに送信されると、このメソッドが自動的に呼び出されます。それは本当ですか? Objective-Cオブジェクトの非オブジェクトメンバにalloc/freeを使用することに関して他に推奨される方法はありますか?
編集:リンゴのドキュメントから
:
サブクラスは、オブジェクトなど 動的に割り当てられたストレージなどで消費される任意の追加メモリ の 放出を可能にするためにdeallocの独自の のバージョンを実装する必要がありますデータ または割り当て解除されたオブジェクト が所有するオブジェクトインスタンス変数。 - しかし、より多くの洞察力が高く評価されて
物事は少し明確になります: はクラス固有の 割り当て解除を実行した後、サブクラスのメソッド は、スーパーへのメッセージを通じて、スーパークラスのバージョンにのdeallocの を組み込む必要があります。
まあ、別のアドレスを指すポインタを割り当てる前にfree()する必要があることを完全に明確にしています...説明をありがとう。 –