将 Xamarin.iOS 代码转换为本机代码
本文关键字:本机代码 转换 代码 Xamarin iOS | 更新日期: 2023-09-27 18:32:59
我想将我的 Xamarin.iOS 基类转换为本机类,以便当项目只需要在 iOS 中完成时,我也可以开发本机类。
现在我有继承自UICollectionViewSource
的抽象类,我真的不知道如何把它放在 Swift 中,因为它是面向协议的。我可以采用"抽象"方式,并在需要重写属性或方法时抛出fatalerror
。
或者我可以走协议的方式,让我的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%,但我从扩展调用"虚拟"方法没有问题。下面是使用 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;
}
}