我有一个奇怪的问题。我使用DialogViewController的子类进行多页面试。每个页面都显示了许多可以编辑的字段,并在右上角点击保存将下一页推送到NavigationController。它似乎工作正常,但很明显,退出和重复采访泄漏了记忆。我创建了一个简单的测试用例,可以正确清理导航项的按钮事件。在这个例子中,当弹出第二个控制器时调用Dispose,但前提是我没有将Root设置为null以外的其他东西(即如果我注释Root = ...行,这会按预期工作)。这是代码。请告诉我,我错过了一些愚蠢的事情。
public class TestViewController : DialogViewController { int mPage;
public TestViewController (int page) : base (null, true)
{
mPage = page;
Root = new RootElement ("Testing") {
new Section () {
new StringElement ("Page: " + mPage)
}
};
}
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
NavigationItem.RightBarButtonItem = new UIBarButtonItem (UIBarButtonSystemItem.Play);
}
public override void ViewWillAppear (bool animated)
{
base.ViewWillAppear (animated);
NavigationItem.RightBarButtonItem.Clicked += OnClicked;
}
public override void ViewDidDisappear (bool animated)
{
base.ViewDidDisappear (animated);
NavigationItem.RightBarButtonItem.Clicked -= OnClicked;
}
private void OnClicked(object sender, EventArgs e)
{
NavigationController.PushViewController(new TestViewController(mPage + 1), true);
}
protected override void Dispose (bool disposing)
{
base.Dispose (disposing);
}
}