The app in question here starts with a class being injected directly from the AppDelegate
with its UIWindow
:
public var window: UIWindow? {
get { return nil }
set {
guard _window == nil else { return }
_window = newValue
_window.makeKeyAndVisible()
start()
}
}
The above code resides in a Cocoapod, and the idea with the start()
function is that it gets a bespoke implementation in whatever code/app is implementing said Cocoapod:
extension TheStartingClass {
func start () {
// do whatever needs doing...
}
}
"TheStartingClass"
is a class that has a TheStartingClassProtocol
, both of which are in the Cocoapod. Whether:
the start function is in the protocol and the class; or
the start function is in the protocol and the protocol extension; or
the start function is only in the protocol extension,
when re-implemented in extension TheStartingClass
outside the Cocoapod, the re-implementation is ignored, I'm guessing because of something to do with the way protocols dispatch methods.
How can I change this code so that func start ()
in extension TheStartingClass
is actually called?
Thank you for reading.