使用选择器初始化的覆盖方法在Swift中具有不兼容的类型

永零

我是Swift的新手,我想像下面这样子类化:

public class CombinedChartRenderer: ChartDataRendererBase {

    private weak var _chart: CombinedChartView!

    public init(chart: CombinedChartView, animator: ChartAnimator, viewPortHandler: ChartViewPortHandler)
    {
        super.init(animator: animator, viewPortHandler: viewPortHandler)

        _chart = chart

        createRenderers()
    }
}

public class MyCombinedChartRenderer: CombinedChartRenderer {
    private weak var _chart: MyCombinedChartView!
    public override init(chart: MyCombinedChartView, animator: ChartAnimator, viewPortHandler: ChartViewPortHandler)
    {
        super.init(chart: chart, animator: animator, viewPortHandler: viewPortHandler)

        _chart = chart
    }
}

总是说

Overriding method with selector 'initWithChart:animator:viewPortHandler:' has incompatible type '(MyCombinedChartView, ChartAnimator, ChartViewPortHandler) -> MyCombinedChartRenderer'

我不确定这是怎么回事。我看到其他代码可以通过提供更专门的子类来完成此类初始化。

CombinedChartView类似于:

public class CombinedChartView: BarLineChartViewBase
{
...
}

public class MyCombinedChartView: CombinedChartView
{
    // do some customization and override
}
Shoaib

只需更改一些变量名,冲突并使用init删除该override关键字即可;

public class CombinedChartRenderer: ChartDataRendererBase {

    private weak var _chart: CombinedChartView!

    public init(chart: CombinedChartView, animator: ChartAnimator, viewPortHandler: ChartViewPortHandler)
    {
        super.init(animator: animator, viewPortHandler: viewPortHandler)

        _chart = chart

        createRenderers()
    }
}

public class MyCombinedChartRenderer: CombinedChartRenderer {
    private weak var _myChart: MyCombinedChartView!
    public init(myChart: MyCombinedChartView, animator: ChartAnimator, viewPortHandler: ChartViewPortHandler)
    {
        super.init(chart: myChart, animator: animator, viewPortHandler: viewPortHandler)

        _myChart = myChart // This can be removed by marking baseclass instance '_chart' as public; 
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用选择器的覆盖方法具有不兼容的类型-Swift

使用选择器'***'的覆盖方法具有不兼容的类型'****'解析

使用选择器'touchesBegan:withEvent:'的重写方法具有不兼容的类型'(NSSet,UIEvent)->()'

具有Objective-C选择器'dealloc'的方法'dealloc()'与具有相同Objective-C选择器的隐式反初始化器冲突

Swift数组初始化器语法类型不匹配

Hybris 在平台初始化页面中创建自定义选择器 + 在系统初始化期间创建/不创建用户

带有空数组的 Swift ui 选择器在调用初始化程序时没有完全匹配

错误:初始化类型时类型不兼容

在Swift 1.1中覆盖初始化程序的正确方法

不兼容类型初始化Java中通用类型的堆栈

不兼容的指针类型使用'UITextField *'类型的表达式初始化'NSString *'

JSONJoy协议的Swift初始化方法不可用作Objective-C选择器

条件绑定的初始化程序必须具有 Optional 类型,而不是 Swift 中的“NSNumber”

Swift:初始化程序中的self具有(T)->()-> T类型

从初始化器返回而不初始化所有存储的属性swift iOS

在Swift中有没有使用类型选择器的类型安全方法?

Swift:具有通用初始化部分的多个初始化器

初始化指向结构的指针时类型不兼容

NSComparator错误:不兼容的块指针类型初始化

初始化'Method *'C的不兼容指针类型

C:不兼容的指针类型初始化

在Swift中,Int是否具有采用String的隐藏初始化器?

C中的指针函数:来自不兼容指针类型的foo初始化

Kotlin中具有延迟初始化和通用工厂方法的类型推断

具有XIB的CustomView-初始化编码器方法中的不确定循环

未初始化的常量并删除分钟选择器

错误:使用类型'taus88_t'|初始化类型'struct taus88_t *'时类型不兼容?

如何从初始化的 Bootstrap 日期选择器中获取日期格式?

日期选择器的beforeShowDay函数中使用“ date”参数初始化的值是什么?