In Swift it’s kind of unsupported to implemented optional protocol methods.
You can, which is ugly, use the @objc
syntax:
Webinar alert: Want to ship more code faster for iOS?If your iOS builds take longer than 12 minutes, watch this tips-and-tricks rich session for building and releasing faster. Watch now on-demand.
@objc protocol MyProtocol {
optional func doSomething();
}
class MyClass : MyProtocol {
// no error
}
Another disadvantage here is that structs are unsupported, as you’re bridging for Objc.
Webinar alert: Want to ship more code faster for iOS?If your iOS builds take longer than 12 minutes, watch this tips-and-tricks rich session for building and releasing faster. Watch now on-demand.
Using protocol extensions to create optional protocol methods
However, with Swift 2.0 it’s possible to define protocol extension. This allows you to create optional methods for your protocol easily:
protocol MyProtocol {
func doSomethingNonOptionalMethod()
func doSomethingOptionalMethod()
}
extension MyProtocol {
func doSomethingOptionalMethod(){
// leaving this empty
}
}
As stated in this thread, many people are asking this feature:
http://stackoverflow.com/questions/24032754/how-to-define-optional-methods-in-swift-protocol