title: Non-'@objc' method does not satisfy optional requirement of '@objc' protocol
body: <h1>Overview:</h1>
  
  <ul>
  <li>I have a protocol P1 which provides a default implementation of one of the Objective-C optional functions.</li>
  <li>When I provide a default implementation of the optional function there is a warning</li>
  </ul>
  
  <h1>Compiler Warning:</h1>
  
  <pre><code>Non-'@objc' method 'presentationController(_:viewControllerForAdaptivePresentationStyle:)' does not satisfy optional requirement of '@objc' protocol 'UIAdaptivePresentationControllerDelegate'
  </code></pre>
  
  <h1>Version:</h1>
  
  <ul>
  <li>Swift: 3</li>
  <li>Xcode: 8 (public release)</li>
  </ul>
  
  <h1>Attempts made:</h1>
  
  <ul>
  <li>Tried adding <code>@objc</code> but doesn't help</li>
  </ul>
  
  <h1>Question:</h1>
  
  <ul>
  <li>How do I resolved this ?</li>
  <li>Is there a work around ?</li>
  </ul>
  
  <h1>Code:</h1>
  
  <pre><code>@objc protocol P1 : UIAdaptivePresentationControllerDelegate {
  
  }
  
  extension P1 where Self : UIViewController {
  
      func presentationController(_ controller: UIPresentationController, viewControllerForAdaptivePresentationStyle style: UIModalPresentationStyle) -&gt; UIViewController? {
          return UIViewController()
      }
  }
  
  
  class A : UIViewController, P1 {
  
  }
  </code></pre>