Yes, in normal conditions (or, what I usually saw), the class is one delegate. But creating an array of delegates also works (just tested it).
Delegates are often used to change the behavior of a delegating object. A good example is application delegation: NSApplication itself is not very interesting; he relies on his delegate to determine the interesting behavior of the application. Having multiple delegates trying to change the behavior of a single object can be a problem if different delegates conflict with each other. What will you do if delegates disagree?
There are several cases in Cocoa when a class uses more than one delegate, but each of them has a separate role. For example, NSTableView has both a delegate and a data source, but both of them are really delegates of the sort.
The problem that I see here is that every time I need to notify delegates, I have to go through them, make sure they respond to the method and call this method.
This is not difficult to solve. For example, you can create an NSInvocation to encapsulate a call, and then send a call to each delegate. However, if you do, you have almost reinvented the notification system. If you require a one-to-many message that you receive with a suggestion from several delegates, you will probably be better off using notifications or KVO.
Caleb source share