1
在我UIViewController
,viewDidLoad
方法,我預訂通知如下:Xamarin NSNotificationCenter:何時調用RemoveObserver?
public override void ViewDidLoad()
{
base.ViewDidLoad();
this.disposable = NSNotificationCenter.DefaultCenter.AddObserver("UserUpdated",() => UserUpdated());
}
我的問題是我在哪裏刪除觀察員,以便有沒有內存泄漏。通常在Objective-C中,我會在dealloc
方法中刪除它。
但是,如果我在Dispose
方法或析構函數中嘗試使用Dispose
上面的disposable
,則會因循環而導致內存泄漏。什麼是防止這種記憶週期的最好方法?
注意:我不能使用ViewWillAppear/ViewWillDisappear
作爲添加/刪除觀察者的方法,因爲當視圖控制器的視圖不在前臺時需要訪問它。
在ViewDidDisappear中,你怎麼知道控制器不再被使用?我的控制器是UITabBarController的一部分。所以它不會從UINavigationController彈出或解散。 –