你有两个 Select :
将超类定义为协议而不是类
Pro:编译时判断每个"子类"(不是实际的子类)是否实现了所需的方法
Con:"超类"(协议)无法实现方法或属性
例子:
class SuperClass {
func someFunc() {
fatalError("Must Override")
}
}
class Subclass : SuperClass {
override func someFunc() {
}
}
Pro:可以在超类中实现方法和属性
Con:无编译时判断