In Swift it’s kind of unsupported to implemented optional protocol methods.
You can, which is ugly, use the @objc
syntax:
Faster iOS app releases with automated QAIf slow QA processes are slowing down your iOS releases, try QA Wolf.
Their AI-native service delivers 80% automated test coverage in weeks, with tests running on real iOS devices—all in 100% parallel with zero flakes.
Rated 4.8/5 on G2. Schedule a demo to learn more.
@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.
Faster iOS app releases with automated QAIf slow QA processes are slowing down your iOS releases, try QA Wolf.
Their AI-native service delivers 80% automated test coverage in weeks, with tests running on real iOS devices—all in 100% parallel with zero flakes.
Rated 4.8/5 on G2. Schedule a demo to learn more.
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