扩展中的声明不能覆盖Swift 4中的错误
我有一个扩展名:
public extension UIWindow { override public func topMostController()->UIViewController? { ... } }
但对于我topMostController
我得到下一个错误:
Declarations in extensions cannot override yet error
它适用于Swift 3.1,但对于Swift 4,我得到这个错误。 如何解决? 他们在Swift 4中改变了什么?
它会工作,如果你使基地实施@objc
:
扩展可以向types添加新的function,但是它们不能覆盖现有的function。
扩展为现有的类,结构,枚举或协议types添加新的function。 这包括扩展您无法访问原始源代码的types(称为追溯build模)。
Swift中的扩展可以:
- 添加计算的实例属性和计算的types属性
- 定义实例方法和types方法
- 提供新的初始化程序
- 定义下标
- 定义和使用新的嵌套types
- 使现有types符合协议
苹果开发者指南
你正试图做的是类似于这个代码所做的:
class MyClass: UIWindow { func myFunc() {} } extension MyClass { override func myFunc() {} }
注意:如果你想override topMostController()
然后创buildUIWindow
子类