In Swift it’s kind of unsupported to implemented optional protocol methods.
You can, which is ugly, use the @objc
syntax:
Latest macOS versions, betas of Xcode, and remove access to solve CI issuesBitrise’s CI solution allows you to run your tests and deliver your builds using the latest technology. Receive Xcode updates within 24 hours and use their remote access solution to solve those issues that only seem to happen on CI. Get started.
@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.
Latest macOS versions, betas of Xcode, and remove access to solve CI issuesBitrise’s CI solution allows you to run your tests and deliver your builds using the latest technology. Receive Xcode updates within 24 hours and use their remote access solution to solve those issues that only seem to happen on CI. Get started.
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