Хотя оба подхода могут быть использованы для удовлетворения описанного требования к обмену сообщениями, в этом случае предпочтительнее использовать протокол делегатов.
Преимущество уведомления как шаблона заключается в том, что многие объекты могут отвечать на уведомление, которое было опубликовано. Объект, желающий соблюдать уведомления, должен зарегистрироваться только для их получения. Преимущество этого заключается в том, что ваш код очень слабо связан (как правило, желаемое значение в oop). Недостатком свободной связи в этом случае является тот факт, что у вас есть потенциально связанное поведение, происходящее в разных классах и по существу по всей вашей кодовой базе.
Шаблон делегирования более тесно связан, и ваш объект делегата должен соответствовать протоколу объекта, из которого он будет получать сообщения. Из-за этого относительно легко наблюдать природу взаимодействия (или предполагаемого взаимодействия) между уведомляющим объектом и уведомляемым объектом - его легче понять, просто просмотрев код, обмен сообщениями между двумя «связанными» объектами. В случае, когда у вас есть ребенок, который по существу объявляет о каком-либо поведении (которое, по-видимому, напрямую связано с поведением родителя, предположительно), я считаю, что делегирование является превосходным подходом.
спасибо. Вот что я подозревал ... – SpaceDog