In Swift it’s kind of unsupported to implemented optional protocol methods.
You can, which is ugly, use the @objc
syntax:
Elevate Your iOS App PerformanceDiscover best practices for monitoring and improving your iOS app’s performance. Learn how to track crash-free rate, optimize start times, and address Watchdog Terminations and ANRs for a seamless user experience. Ensure your app stays fast and responsive at all times. Read our eBook.
@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.
Elevate Your iOS App PerformanceDiscover best practices for monitoring and improving your iOS app’s performance. Learn how to track crash-free rate, optimize start times, and address Watchdog Terminations and ANRs for a seamless user experience. Ensure your app stays fast and responsive at all times. Read our eBook.
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