原生的 Swift protocol 里沒有可選項榕莺,所有定義的方法都是必須實現(xiàn)的单鹿。如果我們想要像 Objective-C 里那樣定義可選的接口方法复斥,Swift 2.0 以后可以使用 protocol extension霉旗。我們可以在聲明一個 protocol 之后再用 extension 的方式給出部分方法默認的實現(xiàn)。這樣這些方法在實際的類中就是可選實現(xiàn)的了南缓。
protocol OptionalProtocol {
func optionalMethod() // 可選
func necessaryMethod() // 必須
func anotherOptionalMethod() // 可選
}
extension OptionalProtocol {
func optionalMethod() {
print("Implemented in extension")
}
func anotherOptionalMethod() {
print("Implemented in extension")
}
}
class MyClass: OptionalProtocol {
func necessaryMethod() {
print("Implemented in Class3")
}
func optionalMethod() {
print("Implemented in Class3")
}
}
let obj = MyClass()
obj.necessaryMethod() // Implemented in Class3
obj.optionalMethod() // Implemented in Class3
obj.anotherOptionalMethod() // Implemented in extension