[Какая разница между источником данных и делегатом?](/kakaya-raznica-mezhdu-istochnikom-dannih-i-delegatom-11620748)
====================================================================================================================

У меня есть фундаментальный вопрос, связанный с шаблонами проектирования Cocoa.

  
Какая разница между делегатом и источником данных?

  
Оба могут использовать объявление `@protocols`, но некоторые классы или фреймворки используют `delegate`, а некоторые другие используют `datasource`.

  
Все, что я могу понять из `UI/NSTableView`, - это `delegate` отвечать на события, связанные с UI, тогда как `datasource` имеет чисто отношение к данным. Но я не знаю никаких реализаций источника данных вне классов пользовательского интерфейса Cocoa.

  
  **Примечание:**

  
 Делегат, которого я упомянул в этом вопросе, не всегда связан с событиями пользовательского интерфейса.  
Ответ на вопрос источника данных.  

Источник данных предоставляет данные, делегат поставляет это поведение.

  
В [MVC](http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller), источник данных находится на уровне модели, а делегат находится на уровне управления.

Собственно, с другой стороны, источником данных обычно является контроллер, который ниже, ближе к модели. Я не думаю, что когда-либо использовал модельный объект в качестве источника данных.