In Swift it’s kind of unsupported to implemented optional protocol methods.
You can, which is ugly, use the @objc
syntax:
Find Your Perfect Microsoft App Center AlternativeLooking for a solution after Microsoft App Center? Discover why Bitrise Release Management is the trusted alternative for mobile teams worldwide. Learn how to streamline the process from test distribution to app store releases, all from one platform. Download the datasheet here.
@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.
Find Your Perfect Microsoft App Center AlternativeLooking for a solution after Microsoft App Center? Discover why Bitrise Release Management is the trusted alternative for mobile teams worldwide. Learn how to streamline the process from test distribution to app store releases, all from one platform. Download the datasheet here.
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