Если вы собираетесь работать в паре с другим классом, где реальный тип этого класса может отличаться, то имеет смысл формализовать такое соединение в протокол и механизм делегирования.
Если информация, которую вы хотите отправить, нацелена на более широкий набор объектов, тогда становится более целесообразным использовать уведомления - хотя теперь вы несколько затеняли, какую информацию передают уведомления, поскольку не существует центрального определения для Что ожидать.
Оба имеют примерно одинаковую нагрузку для работы - с делегатом вы должны установить себя, а затем не забыть сбросить себя, прежде чем вас освободят. Вы должны сделать то же самое с уведомлениями, не забудьте начать прослушивание, а затем отменить подписку, прежде чем вас освободят.
Кроме того, вы должны постараться как можно больше убедиться, что вы отправляете уведомления в главном потоке, так как уведомления отправляются в том же потоке, с которого они начали. То же самое относится и к методам делегатов, не очень приятно вызывать метод делегата из какого-то другого таинственного потока!