I'm at a loss to the advantage here. Seems to me you'd have the same amount of code, and the same number of files if you just moved the code to a superclass rather than another object.
Ex:
superclass with photoDataSource methods
subclass
2 files
object with photoDataSource methods
uiviewcontroller with object set as datasource
2 files
Is there an advantage I am missing to not just placing all the photoDataSource methods into a superclass rather than a separate object?