I have a fundamental question related to Cocoa frameworks design patterns.
What's the difference between delegate and data source?
Both of them could use @protocols
declaration, but some classes or frameworks are using delegate
, and some others are using datasource
.
All I can understand from UI/NSTableView
is the delegate
respond to UI-related events, while the datasource
is purely related to the data. But, I don't know any data source implementations outside the UI classes of Cocoa.
Note:
The datasource supplies the data, the delegate supplies the behavior.
In MVC, datasource is in the model layer and the delegate is in the control layer.
Actually, on second thought, the datasource is usually controller that is lower down, closer to the model. I don't think I've ever used a model object as my datasource.