There are a couple of solutions, depending on the language: - Objective-C's version of interfaces, called 'protocols', can have [optional methods](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/WorkingwithProtocols/WorkingwithProtocols.html#//apple_ref/doc/uid/TP40011210-CH11-SW6). - In Swift, you can define a [protocol extension](https://docs.swift.org/swift-book/LanguageGuide/Protocols.html#ID277) with empty functions as default implementations for optional methods. They can (but do not have to be) overridden by other developers using the protocol (see [here](https://medium.com/@ant_one/how-to-have-optional-methods-in-protocol-in-pure-swift-without-using-objc-53151cddf4ce#99cd)). - Java, version 8 and above, allow interfaces to have [default methods](https://www.geeksforgeeks.org/default-methods-java/) which, like the Swift case, you should leave empty but might be overridden by other developers.