我有一个辅助方法可以加密iPhone上的一些数据。如果由于设备被锁定而导致操作中断,我想删除我刚刚处理的文件。因此,如果调用该方法,我会添加一个notifiaction listner。
两个问题: 1.我得到一个警告,我用来添加监听器的方法已经过时了。我怎么办呢? 2.如果处理完毕,我想摆脱听众 - 但是如何?
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?
}
答案 0 :(得分:2)
要删除过时的警告,您应该使用以下内容:
NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.ProtectedDataWillBecomeUnavailable, Handler);
这适用于所有观察者,例如:
UIKeyboard.WillHideNotification
UIKeyboard.WillShowNotification
UIDevice.OrientationDidChangeNotification
等等。这些是NSString
期待的适当NSNotificationCenter
。
至于摆脱它,我无法亲自验证,因为我目前无法这样做,但一种可能的方法是:
将addobserver声明为NSObject,然后使用NSNotificationCenter.DefaultCenter.RemoveObserver
删除它:
NSObject obj = NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.ProtectedDataWillBecomeUnavailable, handler);
// do whatever you need to do
// time to remove:
NSNotificationCenter.DefaultCenter.RemoveObserver(obj);