如何在 c# Xamarin 中实现与 iOS 用于表格 View 的“委托(delegate)”或“数据源”模式等效的模式?例如,我想要像这样的 View 类:
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 永远不会被垃圾回收。
这似乎是一个普遍的要求,那么人们使用什么设计呢?
我应该将 Source 设为弱引用吗?这是如何在 C# 中完成的?这不是很危险吗,因为调用者可能不知道它是一个弱引用?
最佳答案
我建议您使用 Profiler 来查看这是否真的是内存泄漏。如果您发现这确实是一个问题,您可以使用 WeakReference
class 弱引用委托(delegate)。 ,它持有对对象的弱引用。
关于c# - 如何在 c# Xamarin 中实现 ios 委托(delegate)/数据源模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18547121/