Существует два ключевых преимущества делегирования: настройка объектов без создания подклассов и улучшение инкапсуляции.
Настройка без создания подклассов - это преимущество, которое вы получаете от многих API-интерфейсов Cocoa и Cocoa-Touch, используя шаблон делегата. Если они этого не сделали, вам, возможно, придется создавать подкласс UITableView каждый раз, когда вы хотите изменить его поведение, используя разные типы ячеек или другой источник данных. Вместо этого вы просто устанавливаете делегат табличного представления и источник данных, чтобы настроить его поведение.
Что касается инкапсуляции, то шаблон делегата помогает вам разделить различные компоненты вашего кода. Например, если вашему пользовательскому представлению нужно иметь некоторые данные, было бы плохой практикой просто предоставить ему доступ к вашей модели или даже полный доступ к вашему контроллеру. Вместо этого вы, вероятно, настроите какой-то протокол делегирования для своего View, который будет реализован вашим контроллером. Таким образом, ваши классы узнают друг о друге не больше, чем нужно, поэтому изменения в одной части с меньшей вероятностью сломают другие.