Xamarin.ios &引用;“过时”;尝试侦听通知时发出警告,以及如何停止观察?
我有一个助手方法,可以加密iPhone上的一些数据。如果操作因设备锁定而中断,我想删除刚刚处理的文件。因此,如果调用该方法,我将添加notifiaction listsner 两个问题: 1.我得到一个警告,我用来添加侦听器的方法已经过时。否则我怎么做呢? 2.如果处理完成了,我想摆脱监听器——但如何摆脱呢Xamarin.ios &引用;“过时”;尝试侦听通知时发出警告,以及如何停止观察?,xamarin.ios,Xamarin.ios,我有一个助手方法,可以加密iPhone上的一些数据。如果操作因设备锁定而中断,我想删除刚刚处理的文件。因此,如果调用该方法,我将添加notifiaction listsner 两个问题: 1.我得到一个警告,我用来添加侦听器的方法已经过时。否则我怎么做呢? 2.如果处理完成了,我想摆脱监听器——但如何摆脱呢 private static foo(string sDestPathAndFile) { NSNotificationCenter.DefaultCenter.AddObserver
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?
}
要消除过时的警告,应使用以下命令:
NSNotificationCenter.DefaultCenter.AddObserver(UIApplication.ProtectedDataWillBecomeUnavailable, Handler);
这适用于所有观察员,例如:
UIKeyboard.WillHideNotification
UIKeyboard.WillShowNotification
UIDevice.OrientationDidChangeNotification
等等。这些是NSNotificationCenter
期望的适当的NSString
至于如何摆脱它,我无法直接验证,因为我目前无法做到这一点,但一种可能的方法是:
将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);