title: Protocol extension on an ObjC protocol
body: <p>I have an Objective-C protocol which is used by mostly objective-C objects and one or two Swift objects.</p>
  <p>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.</p>
  <p>If I add these</p>
  <pre><code>func registerForPresetLoadedNotification() {
      NSNotificationCenter.defaultCenter().addObserver(self as AnyObject,
                                                       selector: #selector(presetLoaded(_:)),
                                                       name: kPresetLoadedNotificationName,
                                                       object: nil)
  }
  
  func presetLoaded(notification: NSNotification) {
      
  }
  </code></pre>
  <p>I get an error on the #selector which says:</p>
  <blockquote>
  <p>Argument of '#selector' refers to a method that is not exposed to Objective-C</p>
  </blockquote>
  <p>If I then mark presetLoaded as <code>@objc</code> I get an error which says:</p>
  <blockquote>
  <p>@objc can only be used with members of classes, @objc protocols, and concrete extensions of classes</p>
  </blockquote>
  <p>I also cannot mark the protocol extension as @objc</p>
  <p>When I create the Objective-C protocol as a Swift protocol I get the same error.</p>
  <p>Is there a way to achieve this that will work for Objective-C and Swift classes that use the protocol?</p>