title: Extend @objc protocol with Comparable in Swift
body: <p>I am trying to extend my protocol <code>Option</code> with <code>Comparable</code> to use simple <code>.sort()</code> method.</p>
  
  <p>Below short example only with <code>Equatable</code> to show errors.</p>
  
  <pre><code>@objc protocol Option: Equatable {
      var title: String { get }
      var enabled: Bool { get }
      var position: Int { get }
  }
  
  func ==(lhs: Option, rhs: Option) -&gt; Bool {
      return lhs.position == rhs.position
  }
  </code></pre>
  
  <p>The <code>Option</code> protocol must be marked as <code>@objc</code> or inherit from <code>NSObjectProtocol</code> because it will be used with <code>UIKit</code>.</p>
  
  <p>Errors: </p>
  
  <ol>
  <li><blockquote>
    <p>@objc protocol 'Option' cannot refine non-@objc protocol
    'Equatable'</p>
  </blockquote></li>
  <li><blockquote>
    <p>Protocol 'Option' can only be used as a generic constraint
    because it has Self or associated type requirements</p>
  </blockquote></li>
  </ol>
  
  <p>Do you have any suggestion how to solve this problem?</p>