I have an Objective-C protocol which is used by mostly objective-C objects and one or two Swift objects.
I would like to extend the protocol in Swift and add 2 functions. One to register for a notification and another to handle the notification.
If I add these
func registerForPresetLoadedNotification() {
NSNotificationCenter.defaultCenter().addObserver(self as AnyObject,
selector: #selector(presetLoaded(_:)),
name: kPresetLoadedNotificationName,
object: nil)
}
func presetLoaded(notification: NSNotification) {
}
I get an error on the #selector which says:
Argument of '#selector' refers to a method that is not exposed to Objective-C
If I then mark presetLoaded as @objc
I get an error which says:
@objc can only be used with members of classes, @objc protocols, and concrete extensions of classes
I also cannot mark the protocol extension as @objc
When I create the Objective-C protocol as a Swift protocol I get the same error.
Is there a way to achieve this that will work for Objective-C and Swift classes that use the protocol?