Można użyć protokołu vs twierdzeniu, jak zasugerowano w odpowiedzi tutaj przez drewag
. Brakuje jednak np. Protokołu. Kryję się tutaj,
Protokół
protocol SomeProtocol {
func someMethod()
}
class SomeClass: SomeProtocol {
func someMethod() {}
}
Teraz wszystkie podklasy są wymagane do implementacji protokołu sprawdzanego w czasie kompilacji. Jeśli SomeClass nie zaimplementuje someMethod, zostanie wyświetlony następujący błąd kompilacji:
błąd: typ „SomeClass” nie jest zgodny z protokołem „SomeProtocol”
Uwaga: działa to tylko dla najwyższej klasy, która implementuje protokół. Każda podklasa może beztrosko zignorować wymagania protokołu. - tak skomentował przezmemmons
Twierdzenie
class SuperClass {
func someFunc() {
fatalError("Must Override")
}
}
class Subclass : SuperClass {
override func someFunc() {
}
}
Jednak asercja będzie działać tylko w czasie wykonywania.