Is a delegate in Objective-C basically a class full of event listeners for an object?
A delegate is merely an object that another object can use to query or customize behavior; nothing more, nothing less. No event handlers involved. It is a pattern that is used to avoid the massive tangle of subclassing that you often see in other object oriented UI kits. For example, instead of subclassing NSWindow to provide custom behavior on resize, you merely implement a few methods on a class somewhere and use an instance of that class as the delegate. Since such implementation is typically dependent on control or model layer information, it is much more natural to use a control layer class as the delegate, not subclass NSWindow, and not pollute the view layer objects with control layer functionality. Under the covers, delegates are dead simple. When resizing, an NSWindow merely asks the delegate “Do you respond to the method windowWillResize:toSize: and, if it does, calls it at the right time; nothing beyond straight objc_msgSend() about it.