繁体   English   中英

Mvvm Light:Xamarin.iOS TwoWay绑定内存泄漏

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM