[英]Mvvm Light: Xamarin.iOS TwoWay binding memory leak
导致内存泄漏的示例代码(GC未收集控制器):
public class SampleViewModel
{
public string TextValue { get; set; }
}
public class SampleViewController : UIViewController
{
private Binding _binding;
private SampleViewModel ViewModel { get; } = new SampleViewModel();
private UITextField Field { get; } = new UITextField();
public override void ViewDidLoad()
{
base.ViewDidLoad();
View.AddSubview(Field);
_binding = this.SetBinding(() => ViewModel.TextValue, () => Field.Text, BindingMode.TwoWay);
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
Console.WriteLine("I am disposed");
}
}
如果您在模拟器上运行它,则不会记录“我被处置”消息。 如果将BindingMode更改为OneWay,则在没有引用示例控制器实例的情况下即会立即显示(即,从导航控制器中弹出的模拟器对象会立即被收集)。
我认为“ ObserveTargetEvent”(在TwoWay绑定内部调用)会产生该泄漏。
我在某个地方错了吗? 或使用绑定系统的方式错误?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.