社内の別のグループ (C++ で記述) が提供するサード パーティ製ライブラリを使用して、この問題に遭遇しました。
Observer のデストラクタでは、サブスクライブしているすべてのオブザーバブルから切り離されます。この部分は私には理にかなっています。しかし、Observable のデストラクタでは、Observable にまだサブスクライバ リストにあるオブザーバがあるかどうかをチェックします。その場合、エラーをスローします。
デストラクタで意図的にエラーをスローするという事実は脇に置いておきます。オブザーバブルがオブザーバーがそれ自体より長生きしないことを期待すべきではない理由を誰かが私に説明しようとすることができますか、それともこれは単に悪い設計なのですか。これが悪い設計である場合、オブザーバーがオブザーバブルよりも長生きする状況にある場合、それを処理する良い方法はありますか?