要想使swift中定义的协议中方法的实现变为可选的,有两种方法。

    第一种,用@objc修饰协议,再在要可选实现的方法前面用optional修饰。但这个有点OC风格,一点都不swift

    1. @objc protocol ExampleProtocol {
    2. func method1() //必选
    3. optional func method2() //可选
    4. }

    第二种方法,定义一个协议的扩展extension,在扩展协议中给方法一个默认实现。个人推荐第二种方法。

    1. protocol ExampleProtocol {
    2. func method1() //必选
    3. func method2() //可选
    4. }
    5. extension ExampleProtocol {
    6. func method2() {
    7. }
    8. }