我有一个超类UIViewController类,它实现了几个默认方法,例如:
class Super: UIViewController {
override func viewDidLoad () {
setupView()
}
func setupView () {
initToolbar()
setPageTitle()
}
func initToolbar () {
// some code..
}
func setPageTitle () {
// nothing?
}
}
和从Super
继承的子类:
class Sub: Super {
override func setPageTitle () {
self.title = "custom title"
}
}
我想强制所有子类覆盖setPageTitle()
方法(如果不存在实现,则强制编译时错误)。但是,我设法实现此目的的唯一方法是在Super
类中提供包含assert
语句的默认实现,如果尚未覆盖,则会导致应用程序崩溃。这不是我真正想要的,因为错误只出现在运行时,理想情况下,如果方法没有实现,我会喜欢编译时警告/错误。有没有办法将此方法设置为要求覆盖?与其他语言的抽象方法类似?
我想过使用协议&扩展但看起来像扩展我不能覆盖viewDidLoad
方法,这对于超类来说是必要的。
有什么想法吗?