Нет способа сделать это во время компиляции в Swift. Функция принудительного переопределения метода отсутствует в Swift.
Но есть обходной путь.
Это можно сделать, поставив фатальную ошибку fatalError("Must Override")
.
Рассмотрим следующий пример.
class Base {
func method1() {
fatalError("Must Override")
}
func method2() { }
}
class Child: Base {
override func method1() { }
func method3() {
fatalError("Must Override")
}
}
class GrandChild: Child {
func method1() { }
func method3() { }
}
Но приведенный выше метод не даст никаких ошибок во время компиляции. Для этого есть другой обходной путь.
Вы можете создать протокол.
protocol ViewControllerProtocol {
func method1()
func method3()
}
typealias ViewController = UIViewController & ViewControllerProtocol
Поэтому, если вы реализуете этот протокол и не реализуете методы, компилятор выдаст ошибку.
В качестве функции протоколов в Swift вы также можете предоставить реализацию методов по умолчанию в расширении протокола.
Надеюсь, это поможет.