オブジェクトを解放しているときに発生する奇妙な問題があります。オブジェクトのdealloc
メソッドで、別の (サブ) オブジェクトを解放しています。このサブオブジェクトが解放されると、EXC_BAD_ACCESS エラーが発生します。release を呼び出す直前に、サブオブジェクトが有効なポインターであると確信しています。
これが私が奇妙なことを確認した方法です-サブオブジェクトのリリースの直前に、deallocメソッド内にブレークポイントを設定し、割り当てられました! メッセージを送信でき、正しく応答します。もう 1 つの奇妙なバグは、NSZombieEnabled が YES に設定されている場合、エラーがまったく発生せず、解放されたオブジェクトにメッセージを送信したという NSZombie の通常のエラーでさえ、コードが適切に実行されることです。
これを解決する方法を知っている人はいますか?
前もって感謝します!
*編集1 *
[super dealloc] を dealloc の最後に配置するとクラッシュすることがわかりましたが、最初に配置するとクラッシュしません。以前に似たようなことがありましたが、逆に、dealloc の開始時に [super dealloc] を実行するとアプリがクラッシュし、最後にはクラッシュしませんでした。
なぜそれが違いを生むのか、いつ何を使うべきなのか?
*編集2 *
スクラッチ編集 #1! どちらの方法でも機能しません。