我试图做的事情:
protocol HasElement {
associatedtype ItemType
func getElement() -> ItemType
func setElement(element: ItemType)
}
class Element {}
class BarElement: Element {}
class Foo: NSObject, HasElement {
typealias ItemType = Element
func getElement() -> Element { ... }
func setElement(element: Element) { ... }
}
class Bar: Foo {
typealias ItemType = BarElement
override func getElement() -> BarElement { ... } // This works.
override func setElement(element: BarElement) { ... } // This fails.
}
错误是:
方法不会覆盖其超类中的任何方法
如果我尝试改用 ItemType:
override func setElement(element: ItemType) { ... } // Still fails.
错误是:
在这种情况下,“ItemType”对于类型查找不明确
有没有办法使这项工作?