In swift book protocol extensions explained like this
Protocols can be extended to provide method and property
implementations to conforming types. This allows you to define
behavior on protocols themselves, rather than in each type’s
individual conformance or in a global function.
Many free functions in swift 1.2 now moved into protocol extensions
In swift book protocol extensions explained like this