将观察者添加到 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;
            }
        }