将观察者添加到 UIView 会导致 xamarin iOS 中的内存泄漏
When adding observer to the UIView causes memory leak in xamarin iOS
我准备了一个自定义控件来输入数值,在我的控件加载中我添加了一个观察器来获取设备方向的变化,如下面的代码片段所示。
Foundation.NSNotificationCenter.DefaultCenter.AddObserver(new NSString("UIDeviceOrientationDidChangeNotification"), this.DeviceRotated);
以上行导致我的自定义控件发生内存泄漏。有谁知道如何解决添加Observer导致的内存泄露问题
我通过在代码片段中处理 NSObject 解决了这个问题。
private NSObject deviceRotatedObserver;
this.deviceRotatedObserver = Foundation.NSNotificationCenter.DefaultCenter.AddObserver(new NSString("UIDeviceOrientationDidChangeNotification"), this.DeviceRotated);
protected override void Dispose(bool disposing)
{
if (this.deviceRotatedObserver != null)
{
this.deviceRotatedObserver.Dispose();
this.deviceRotatedObserver = null;
}
}
我准备了一个自定义控件来输入数值,在我的控件加载中我添加了一个观察器来获取设备方向的变化,如下面的代码片段所示。
Foundation.NSNotificationCenter.DefaultCenter.AddObserver(new NSString("UIDeviceOrientationDidChangeNotification"), this.DeviceRotated);
以上行导致我的自定义控件发生内存泄漏。有谁知道如何解决添加Observer导致的内存泄露问题
我通过在代码片段中处理 NSObject 解决了这个问题。
private NSObject deviceRotatedObserver;
this.deviceRotatedObserver = Foundation.NSNotificationCenter.DefaultCenter.AddObserver(new NSString("UIDeviceOrientationDidChangeNotification"), this.DeviceRotated);
protected override void Dispose(bool disposing)
{
if (this.deviceRotatedObserver != null)
{
this.deviceRotatedObserver.Dispose();
this.deviceRotatedObserver = null;
}
}