を削除されませんそれはわかりやすいので、私はそれらを削除しようとしていますが、これについては最善の方法を知りません。心に浮かぶ唯一のことは、それらをすべて配列に追加し、次にdeallocですべてをループし、それらをオブザーバとして作成したクラスを削除することです。私は完全にどのパラメータを[[NSNotificationCenter defaultCenter] removeObserver
に渡すか分からない。各ヘッダービューには、それぞれ異なるコールバックを発生させる3つの異なるボタンがあります。これは3つの配列を必要とするのでしょうか?呼び出されるアクションの種類ごとに、removeTarget
を使用しますか? docsからオブザーバー私はUITableViewHeaderにボタンを追加しているが、オブザーバーを解除する前に除去されなかったコンソールメッセージを得ることが
0
A
答えて
0
:彼らは前に:)オブジェクト:またはremoveObserver:名前
重要な通知センターは、あなたが removeObserverを使用してオブザーバーを(登録解除することを確認する必要があり、そのため、 をそのオブザーバーを保持しません。 が割り当て解除されました。 (そうしないと センターが解放されたオブジェクトにメッセージを送信する場合は、ランタイムエラーが発生します。)
をあなたがボタンをサブクラス化している場合は、あなたがすべてのオブザーバにメッセージを投稿できること観察可能なUIButtonがkaputに近づいています。
[[NSNotificationCenter defaultCenter] postNotificationName:@"UIButton_dealloc" object:self];
または、ボタンはあなたがすることができます削除されますと、ボタンを割り当てクラス:
// The special event
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething:) name:@"UIButton_event" object:theButton];
// The dealloc
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopObserving:) name:@"UIButton_dealloc" object:theButton];
....
-(void) stopObserving:(NSNotification*)notif {
if ([name isEqualToString:@"UIButton_dealloc"]) {
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UIButton_event" object:object];
}
}
:
[[NSNotificationCenter defaultCenter] postNotificationName:@"UIButton_dealloc" object:theButton];
、観察者のオブジェクトは、両方のケースでは、これを行います
しかし、これはUIButtonの場合はやや複雑な例ですが、他の場合には役立ちます。
関連する問題
- 1. Swift Firebase削除していないオブザーバーを削除する
- 2. KVOオブザーバーを削除するには?
- 3. Firebase .child追加されたオブザーバーが子を複製する
- 4. 最後のオブザーバーがサブスクライブを解除したときにAsyncSubjectが完了しないようにする方法
- 5. Rubyモジュールにオブザーバーを追加してから、私のシステムはロックされます
- 6. ARC後ココアのオブザーバーを削除する
- 7. 製品削除オブザーバー
- 8. Android RxJava onNextはオブザーバーが登録解除されているときでも呼び出されます
- 9. は、マウスのボタンが、私はボタンが解放されるように私は、マウスのボタンを押しています、とすぐに除去しながらJSで追加されたdiv要素を持っているページで
- 10. すべてのオブザーバーがObservableから登録を解除したときにイベントがありますか?
- 11. いつオブザーバーを削除すればよいですか?オブザーバを削除する前にオブジェクトの割り当てを解除する際のエラー
- 12. 名前でオブザーバーを削除する方法.ALAssetsLibraryChanged swift 3
- 13. RxAndroidを使用してオブザーバーをレスポンスに追加しますか?
- 14. UIButtonにオブザーバーを追加するにはどうすればよいですか?
- 15. オブザーバーをテストするには?
- 16. すべてのオブザーバーを削除すると、keeySynced()も無効になります。
- 17. アプリ全体のライフタイムにオブザーバーが存在するようにするには、手動でオブザーバーを削除する必要がありますか?
- 18. いつUIApplication Notificationsのオブザーバーを追加/削除する必要がありますか?
- 19. なぜios8でオブザーバーを削除する必要がありますか?
- 20. 値なし削除ボタンを押したときに私がやっている
- 21. オブザーバーは誰ですか?そしてオブザーバーは誰ですか?
- 22. ファイルに追加された名前を削除するには?
- 23. レルムをオブザーバーにすることは可能ですか?
- 24. アップロードファイルに削除ボタン(リンク解除)を追加する
- 25. Android Lifecycleからオブザーバーとして自分自身を削除することは必須ですか?
- 26. 観察されたイベントの後のオブザーバーの削除
- 27. 高さの変化にオブザーバーを追加するにはどうすればいいですか?
- 28. iOSデリゲートとオブザーバーによって呼び出されたメソッドがメインスレッドで実行されていますか?
- 29. 通知オブザーバーはどこで削除すればよいですか?
- 30. UITableViewHeaderにサブビューを追加すると、間違った幅が表示されますか?
これは私が現在使用しているコントロールイベントにどのようにマップするのか分かりません。オブザーバを追加するには、私は現在 'addTarget'を使用しています。したがって、' addTarget'を 'removeTarget'する必要はありませんか?いずれにしても、最良のアプローチを追跡するための配列ですか? – Echilon
私はそれが、http://cocoawithlove.com/2008/06/five-approaches-to-listening-observing.htmlオブザーバーの情報を参照してくださいと思う –
それはまだ実際にどのようにターゲットを削除するには答えていないbuttn UIControlEventの場合'removeObserver'のパラメータとして何が渡されますか? – Echilon