c# Xamarin で、iOS がテーブル ビューに使用する「デリゲート」または「データ ソース」パターンに相当するものを実装するにはどうすればよいですか? たとえば、次のようなビュー クラスが必要です。
public class MyDataView : UIView
{
public interface ISource
{
int NumberOfPages();
}
public ISource DataSource { get; set; }
}
しかし問題は、次のようなコードで MyViewController からこれを呼び出すときです。
this.myDataView.DataSource=new ViewSource(this)
public class ViewSource : MyDataView.ISource
{
private readonly MyViewController parentController;
public ViewSource(MyViewController parentController)
{
this.parentController=parentController;
}
}
循環参照が作成されるため、 MyViewController をガベージ コレクションすることはできません。
これは一般的な要件のように思えますが、人々はどのようなデザインを使用しているのでしょうか?
ソースを弱参照にする必要がありますか? それはC#でどのように行われますか? 呼び出し元が弱い参照であることを知らない可能性があるので、それは危険ではありませんか?