Swift协议与子类型的一致性

时间:2016-03-24 10:07:18

标签: ios swift swift-protocols

我希望能够使用实现协议要求的类型来实现协议的属性(下面的B)。例如我想得到下面的代码来编译。目前,错误是“类型D不符合协议B”

protocol A {
   func doSomething()
}

protocol B {
    var property: A { get }
}

class C: A {
    func doSomething() {
        //Stuff
    }
}

class D: B {
    var property: C = C()
}

1 个答案:

答案 0 :(得分:1)

猜测这应该与关联类型

一起完成
protocol B {
    associatedtype T : A
    var property: T { get }
}

class D : B{
    var property : C = C()

}