将 Xamarin.iOS 代码转换为本机代码

本文关键字:本机代码 转换 代码 Xamarin iOS | 更新日期: 2023-09-27 18:32:59

我想将我的 Xamarin.iOS 基类转换为本机类,以便当项目只需要在 iOS 中完成时,我也可以开发本机类。

现在我有继承自UICollectionViewSource的抽象类,我真的不知道如何把它放在 Swift 中,因为它是面向协议的。我可以采用"抽象"方式,并在需要重写属性或方法时抛出fatalerror

或者我可以走协议的方式,让我的UICollectionViewSource subclass采用协议,这样可以更好地完成代码,并且您不会忘记实现任何东西。

将 Xamarin.iOS 代码转换为本机代码

我相信

最接近的是协议和扩展。这样,您可以为具有默认实现的方法提供默认实现。

protocol MyCollection : UICollectionViewDataSource {
    func foo() -> Double
    func fooAbstract() -> Double
}
// provide default implementations
extension MyCollection {
    func foo() -> Double{
        return Double.infinity;
    }
}
// requires missing methods to be implemented
class  NewCollection : MyCollection {
    ...
}

编辑以回答您的问题。如果这是你的意思,我不是 100%,但我从扩展调用"虚拟"方法没有问题。下面是使用 UICollection 源以外的其他内容的示例(:)实现的方法太多)。

protocol MyTwo{
        func fooA2() -> Bool
}
protocol MyCollection : MyTwo {
    func foo() -> Double
    func fooAbstract() -> Double
}
// provide default implementations
extension MyCollection {
    func foo() -> Double{
        if fooA2() {
            return Double.infinity;
        }
        return 0;
    }
}
class  NewCollection : MyCollection {
    func fooAbstract() -> Double{
        return foo();
    }
    func fooA2() -> Bool {
        return true;
    }
}