My favourite talk of WWDC 2015 was Protocol-Oriented Programming in Swift. However, when Dave Abrahams says, “Swift is the first Protocol-Oriented Programming language”, I didn’t get it. Isn’t
protocol in Swift the same as
interface in other languages? Isn’t “Protocol-Oriented Programming” the same as one of the SOLID principles - Dependency inversion principle - “Depend upon Abstractions. Do not depend upon concretions”? It is not new at all.
Then in the later part of the talk I learned from Dave how powerful protocol is in Swift 2, especially Self Requirement and Protocol Extensions, and why we should use protocols instead of classes for abstraction. I felt excited and already Protocol-Oriented myself after watching the talk. I need to do something to check if I really am :)
So here comes FormationLayout, a Protocol-Oriented AutoLayout library in Swift 2. Now I will show you how I made it Protocol-Oriented and why it is good.