Swift Language Extensions Protocol extensions


A very useful feature of Swift 2.2 is having the ability of extending protocols.

It works pretty much like abstract classes when regarding a functionality you want to be available in all the classes that implements some protocol (without having to inherit from a base common class).

protocol FooProtocol {
    func doSomething()

extension FooProtocol {
    func doSomething() {

class Foo: FooProtocol {
    func myMethod() {
        doSomething() // By just implementing the protocol this method is available

This is also possible using generics.