iOS でイベントをサブスクライブする最良の方法は ViewDidLoad ですが、ビューを閉じると、ViewDidUnload() は呼び出されません (メモリ警告の場合のみ)。
イベントの購読を解除するのに最適な場所はどこですか?
(subviewController では、MainViewController を参照するイベントをサブスクライブします。サブビューを 2 回開くと、viewdidunload() のサブスクライブ解除が呼び出されないため、2 つのイベント トリガーを受け取ります。)
ViewWillAppear/ViewWillDisapperで購読/購読解除してはどうですか?
public override void ViewWillAppear (bool animated)
{
base.ViewWillAppear (animated);
this.mBL.OrderChanged += HandleOrderChanged;
}
public override void ViewWillDisappear (bool animated)
{
base.VieWillDisappear (animated);
if (this.mBL!=null)
this.mBL.OrderChanged -= HandleOrderChanged;
}