在我的UIViewController
,viewDidLoad
方法中,我订阅了以下通知:
public override void ViewDidLoad()
{
base.ViewDidLoad();
this.disposable = NSNotificationCenter.DefaultCenter.AddObserver("UserUpdated", () => UserUpdated());
}
我的问题是我在哪里删除观察者,以便没有内存泄漏。通常在Objective-C中,我会在dealloc
方法中将其删除。
但是如果我在Dispose
方法或析构函数中尝试disposable
上面的Dispose
,则会因为一个循环而导致内存泄漏。防止这种记忆循环的最佳方法是什么?
注意:我不能使用ViewWillAppear/ViewWillDisappear
作为添加/删除观察者的方法,因为当视图控制器的视图不在前台时我需要访问它。
答案 0 :(得分:0)
I wrote about my own experiences regarding memory leaks in Xamarin.iOS here.
tl;dr: Use ViewDidDisappear
and check if the controller is actually be popped or dismissed, to clean up.