swift中的可选协议方法,不使用@objc

Ash*_*aha 0 methods protocols optional swift swift-extensions

在swift中使用@objc,我们可以在协议中创建一个可选方法

@objc protocol MyProtocol {
  @objc optional func anOptionalMethod()
}
Run Code Online (Sandbox Code Playgroud)

但是如何在不使用@objc的情况下创建可选的协议方法?

ter*_*eks 10

您可以通过以下方式定义默认func实现:

protocol Opt {
    func requiredFunc()
    func optionalFunc()
}

extension Opt {
    func optionalFunc() {}
}
Run Code Online (Sandbox Code Playgroud)

有了这个,您就不必在符合Opt的类中实现optionalFunc(),因为它们已经有了默认实现.