2011-02-03 4 views
2

私はiPhone上のいくつかのデータを暗号化するヘルパーメソッドを持っています。デバイスがロックされているために操作が中断された場合は、処理したばかりのファイルを削除します。したがって、メソッドが呼び出された場合は、notifiaction listsnerを追加します。NSNotificationをリスニングしようとすると "Obsolete"警告が表示され、監視を停止する方法は?

2つの問題: 1.リスナーを追加するために使用するメソッドが廃止されているという警告が表示されます。それ以外はどうすればいいですか? 2.処理が完了したら、リスナーを取り除きたいのですが、どうですか?

NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.ProtectedDataWillBecomeUnavailable, Handler); 

これは、すべてのオブザーバに適用され、例えば:ように

UIKeyboard.WillHideNotification 
UIKeyboard.WillShowNotification 
UIDevice.OrientationDidChangeNotification 

と:

private static foo(string sDestPathAndFile) 
{ 
    NSNotificationCenter.DefaultCenter.AddObserver ("UIApplicationProtectedDataWillBecomeUnavailable", 
    delegate(NSNotification oNotification) 
    { 
    Util.DeleteFile (sDestPathAndFile); 
    throw new InvalidOperationException ("Protected data became unavailable - device locked?"); 
    }); 

    // Do some processing here. 
    // ... 
    // Now get rid of the notification listener - but how? 
} 

答えて

2

が廃止された警告を取り除くためには、次の手順を使用する必要があります。これらはNSNotificationCenterが期待している適切なNSStringです。

それを退治するためとして、私がそうする立場に現在いないんだと、私はこの最初の手を確認することはできませんが、1つの可能な方法は、次のとおりです。

その後、使用、NSObjectのようaddobserverを宣言しますを削除する:

NSObject obj = NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.ProtectedDataWillBecomeUnavailable, handler); 

// do whatever you need to do 
// time to remove: 
NSNotificationCenter.DefaultCenter.RemoveObserver(obj); 
+0

ありがとうございました。 – Krumelur

関連する問題