Да, в нормальных условиях (или что я обычно видел) у класса есть один делегат.Но создание массива делегатов также работает (только что проверил).
Делегаты часто используются для изменения поведения делегирующего объекта.Хороший пример - делегат приложения: само по себе NSApplication не очень интересно;он полагается на своего делегата для определения интересного поведения приложения.Наличие нескольких делегатов, пытающихся изменить поведение одного объекта, может быть проблемой, если различные делегаты конфликтуют друг с другом.Что вы делаете, если делегаты не согласны?
В Какао есть несколько случаев, когда класс использует более одного делегата, но у каждого есть отдельная роль.Например, NSTableView имеет и делегата, и источник данных, но оба действительно являются делегатами своего рода.
Проблема, которую я вижу здесь, заключается в том, что каждый раз, когда мне нужно уведомить делегатов, которых я должен зациклитьчерез них убедитесь, что они отвечают на метод, и вызовите этот метод.
Это не трудно решить.Например, вы можете создать NSInvocation для инкапсуляции вызова, а затем отправить вызов каждому «делегату».Однако, если вы сделаете это, вы почти заново изобрели систему уведомлений.Если вам нужно общение «один ко многим», которое вы получите с вашим предложением для нескольких делегатов, вам, вероятно, будет лучше использовать уведомления или KVO.