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

Converting Xamarin.iOS code to native?

我想把我的Xamarin.iOS基础类转成native,这样当一个项目只需要在iOS做的时候我也可以开发native了。

现在我有从 UICollectionViewSource 继承的抽象 类,我真的不知道如何将它放入 Swift,因为它是面向协议的。当需要覆盖 属性 或方法时,我可以采用 "abstract" 方式并抛出 fatalerrors。

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

我相信最接近的是协议和扩展。这样您就可以为具有一个的方法提供默认实现。

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%,但我从扩展中调用 "virtual" 方法没有问题。这是一个使用 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;
    }
}