我有SWIFT代码:斯威夫特协议继承
import Foundation
protocol ParentProtocol {
//stuff
}
protocol ChildProtocol:ParentProtocol {
//additional stuff
}
protocol FooProtocol {
var variable:ParentProtocol? { get }
}
class Foo:FooProtocol {
var variable:ChildProtocol?
}
我有编译器错误:Type 'Foo' does not conform to protocol 'FooProtocol'
我知道,根据FooProtocol
,变量的类型必须为ParentProtocol
类型。在另一方面,从ParentProtocol
ChildProtocol
继承,所以它也是一个ParentProtocol
是否有任何解决方案中使用的协议基业呀?
@ShadowOf是的,谢谢。与相关类型的解决方案按预期工作:http://stackoverflow.com/a/38008288/824285 – somedev
相关:[我怎样才能使一个函数与一个子类返回类型符合协议,其中一个超类定义为返回类型?](http://stackoverflow.com/questions/35094967/swift-how-can-i-make-a-function-with-a-subclass-return-type-conform-to-a-protoc) – Hamish
也相关(metatypes的一致性和继承性):[协议不符合自己?](http://stackoverflow.com/questions/33112559/protocol-doesnt-conform-to-it-自己),引用MartinR:s评论,_“即使使用'protocol P:Q {}','P'也不符合'Q'“_。 – dfri