title: Swift vs Objcective-C protocols
body: <p><s>Coming from an Objective-C background where every protocol must always have a delegate property. In Swift that doesn't seem to be the case and it's breaking the paradigm I have had about protocols.</p>
  
  <p>AFAIK in Swift, protocols are used for 2 major purposes: delegation pattern (which would need a delegate like Objective-C) and also composition pattern (that didn't exist in Objective-C and doesn't need a delegate property) coupled with extension making it more effective than the traditional inheritance pattern in Objective-C.  </p>
  
  <p>Have I understood correctly? Can you please clarify? </s></p>
  
  <p><strong>EDIT:</strong></p>
  
  <p>What I mean by what I see different is:
  From Apple's <a href="https://developer.apple.com/videos/play/wwdc2015/408/" rel="nofollow">WWDC</a></p>
  
  <p>The traditional way is (Slide76):</p>
  
  <pre><code>class Ordered {
   func precedes(other: Ordered) -&gt; Bool { fatalError("implement me!") }
  }
  class Number : Ordered {
   var value: Double = 0
   override func precedes(other: Ordered) -&gt; Bool {
   return self.value &lt; (other as! Number).value
   }
  } 
  </code></pre>
  
  <p>The new Swift way is (Slide 90):</p>
  
  <pre><code>protocol Ordered {
   func precedes(other: Self) -&gt; Bool
  }
  struct Number : Ordered {
   var value: Double = 0
   func precedes(other: Number) -&gt; Bool {
   return self.value &lt; other.value
   }
  }
  </code></pre>
  
  <p>And I have never seen Protocols being used like this in Objective-C. So how are they different?</p>