I'm working through another UITableView tutorial and it always my learning process always reverts back to the idea of protocols and delegates. The area that is a bit confusing is the idea of a delegate variable of that type protocol. It seems that when programming, if you choose to make an object conform to a protocol then it appears that you need to create a variable called delegate as well (of the type protocol)? Part of me says this isn't true that we have to create this variable but I'm not sure plus I'm not fully understanding the reason for this variable.

I comprehend that in order for an object to conform to a protocol then it needs to implement certain variables and/or methods. I always get confused when I see a tutorial that creates a variable called delegate within the same object. If the object already conforms to the protocol by implementing the variables and/or methods, then what is the reason for creating a variable called delegate and setting the type to that of the protocol?