Non-'@objc' method does not satisfy optional requirement of '@objc' protocol
<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>