オブジェクトがデリゲートにメッセージを送信しようとし、デリゲートがすでに解放されているときに、アプリの1つでクラッシュが発生したことに最近気づきました。
現時点では、デリゲートメソッドを呼び出す直前に、次のチェックを実行します。
if (delegate && [delegate respondsToSelector:...]){
[delegate ...];
}
しかし、明らかに、これは、デリゲートがnilでない場合は考慮されませんが、割り当てが解除されています。
デリゲートのメソッドでオブジェクトのデリゲートをnilに設定する以外に、オブジェクトdealloc
への参照がなくなった場合に備えて、デリゲートがすでに解放されているかどうかを確認する方法はありますか。