OK. First of all let me tell you that the book describes on page 87f. what delegation means. I recommend you reading it, if you didn’t really get the idea of delegation.
But for now let me try to answer your questions:
I think your question is, why there isn’t any function looking like this:
in the header oder implementation file, right ?
The answer is that there is no need to declare such methods. When you have a target-action-pair, your controller can be sent any message. To tell XCode which messages should be triggered, when something (a tap for example) occurs, you link the message by control-dragging from the object in the interface builder to the File’s owner and selecting a message. To tell XCode which methods are reserved for these events, you take IBAction as the return value.
With delegation you got a different situation. It’s like a contract. The object that wants its events to be delegated has a protocol which lists the messages it may send. The delegate of it should conform to that protocol (meaning that the delegate implements all the required methods of the protocol). Now the contract: The object says: “I will only send you messages in that protocol” and the delegate says: “And I will implement all those methods, so the program doesn’t crash”.
We say that the Class conforms to the delegate-protocol. That’s it.
All methods in the protocol are associated with the delegated object(s).
I’ll give you another metaphor. There are two guys standing in front of an electric fence. Now one starts peeing against the fence and gets a shock. The other one stands there without getting a shock. If now the other guy starts peeing against the same fence he also gets a shock. The “delgation” of their peeing is completely independent from the peeing of the other guy.
I hope that example wasn’t too disgusting - but it was the first thing that came to my head