Xamarin IOS 中已弃用 NSKeyedUnarchiver.UnarchiveTopLevelObject 的替代方案

Alternative for Deprecated NSKeyedUnarchiver.UnarchiveTopLevelObject in Xamarin IOS

我正在创建一个 .Net MAUI 应用程序,并且由于我需要向 UI 渲染更多的点,我将使用平台原生渲染。

我是 IOS 的新手,为了提高性能,我参考了此 blog 中给出的示例,我在其中解码现有层并复制到新的 CAShapeLayer。但我正面临以下这些更改的弃用警告。

var newDrawingLayer = NSKeyedUnarchiver.UnarchiveTopLevelObject(
                data: NSKeyedArchiver.GetArchivedData(drawingLayer, false, out error), error: out error) as CAShapeLayer;

在 Xamarin IOS 中实现此目标的替代方案是什么?

终于自己解决了。我们可以使用 GetUnArchiveObject 而不是使用已弃用的 UnarchiveTopLevelObject,并且需要提供额外的参数来表示要获取的对象的类型。这是我从 CAShapeLyer 得到的,你可以给出 object.Class(这里是 drawingLayer.Class)。下面的代码解决了我的问题。

  var newDrawingLayer = NSKeyedUnarchiver.GetUnArchiveObject(drawingLayer.Class,
                    data: NSKeyedArchiver.GetArchivedData(drawingLayer, false, out error), error: out error) as CAShapeLayer;