只能被class继承的协议
protocol Runnable1: AnyObject {}
protocol Runnable2: class{}
@objc protocol Runnable3 {}
- 被@objc修饰的协议,还可以暴露给OC去遵守实现
可选协议
- 可以通过@objc定义可选协议,这种协议只能被class遵守
@objc protocol Runnable {
func run1()
@objc optional func run2()
func run3()
}
class Dog: Runnalbe {
func run1() { print("Dog run1") }
func run3() { print("Dog run3") }
}
var d = Dog()
d.run1() // Dog run1
d.run3() // Dog run2
- 下面这种也可以实现可选协议
protocol Runnable {
func run1()
func run2()
}
extension Runnable {
func run1()
}