2012-02-03 44 views
1

私のAppDelegateには、LoggedOnという静的イベントがあります。モノタック:ビューを処分する必要がありますか?

私の親ビューコントローラがクライアントビューコントローラをプッシュします。私のクライアントビューコントローラは、AppDelegate.LoggedOnイベントにデリゲートを追加します。

クライアントViewControllerをポップすると、LoggedOnイベントのリスナーはまだ聞こえています。emmmmm ...それを処分したいのですか?

私はそれをpop'edときにクライアントのビュー全体が廃棄されたと思った?

ありがとうございます! Mojo

答えて

1

EventHandlerは、あなたが持っているLoggedOnイベントのようなグローバルイベントに処理するのが最善です。これらは強い参照と呼ばれ、デリゲートを含むViewControllerがガベージコレクションされないようにします。

私はClientViewControllerにこのような何かをするだろう:

public override void Dispose(bool disposing) 
{ 
    base.Dispose(disposing); 

    if(disposing) { 
     AppDelegate.LoggedOn -= Handle_LoggedOn; 
    } 
} 
+0

問題が実際にイベントを通じて保有されている参照です。代わりに、クライアントコントローラのViewDidDisapper()では、イベントをNULLに設定して、参照するすべての代理人を強制終了させることができます。これは、イベントを定義しているクラスの内部からのみ行うことができます。 – Krumelur

+0

ありがとうございました...それは助けました。 Disposeの問題は、すぐに解雇されないため、ViewDidDisapperは大きな助けになります。再度、感謝します! :) – MojoDK

関連する問題