すべてのオブザーバーのリストを格納するObservableクラスを実装しました。このリストには、メモリリークを防ぐためのオブザーバーへの弱参照を含める必要がありますか?
一般的な習慣は何ですか?
すべてのオブザーバーのリストを格納するObservableクラスを実装しました。このリストには、メモリリークを防ぐためのオブザーバーへの弱参照を含める必要がありますか?
一般的な習慣は何ですか?
必ずというわけではありませんが、文脈によって異なります。一部のオブザーバーは、ログ記録などの単純なことをしたいだけで、Observable オブジェクトによって維持されることを好む場合があります。最善の方法は、オブザーバーが自分自身を明示的に登録解除する必要があるかどうかを知ることができるように、選択を明確に文書化することです。
トピックIObservable
から外れて、.NET 4 のインターフェイスだけでなく Rx を使用している場合は、スレッド セーフと呼び出し順序を処理するため、Subscribe
呼び出しを のプライベート インスタンスにマップする必要があります。その後、サブジェクト インスタンスSubject
を呼び出すことができます。On*
トピックでは、サブスクライバーが独自のサブスクリプションを管理するのが一般的です。少なくとも、これはSubscribe
戻り値を破棄することを意味しますが、Rx では通常、サブスクリプションは別の演算子 ( Take
or などTakeUntil
) によって終了されます。