私はAndroidの用語を使用してこの例を作成しますが、すべてのオブジェクト指向プログラミングでは同じだと思います。名前の名前FragmentA
とFragmentB
とインターフェースを持つ2つの断片(クラス)がある場合インターフェイスは強くまたは弱い参照ですか?
はInterface1
FragmentA
は、インタフェースのインターフェース1」を実装します。
FragmentA
オブジェクトはFragmentB
というオブジェクトを作成し、それを強力な参照インスタンス変数として格納します。
FragmentA
は、オブジェクト作成の一部としてFragmentB
のコンストラクタに(実装はInterface1
)を渡します。
FragmentB
は、という強力な参照インスタンス変数としてInterface1
実装オブジェクト(この場合はFragmentA
のオブジェクト)を格納します。
1- mInterface1Obj
のFragmentB
は、FragmentA
オブジェクトへの強い参照を保持しますか?
2-このシナリオではメモリリークが発生しますか?
3-メモリリークを避けるために、mInterface1Obj
は弱い参照(Interface1 mInterface1Obj
の代わりにWeakReference<Interface1> mInterface1Obj
)にする必要がありますか?
あなたは完全に無関係の概念を混乱させる。インタフェースは参照強度やメモリリークとは関係ありません。オブジェクトが不必要に参照されない限り、シナリオには固有のメモリリークはありません。 – shmosel