Delegation is a design pattern where one object asks another object for help. Protocols are an important part of Delegation, because protocols define how an object will be helped.
Delegation works by defining a protocol that will list out all the methods and properties an object will need help with. Another object, known as the delegate, will provide the help needed by adopting and implementing the protocol methods. Objects ask for help by sending messages to their delegates.
Defining Delegate Protocols
Let’s say you want to implement Delegation for your object graph that includes the Project object and ...