стоит допускать только в View-части MVC-модуля, а в контроллере и тем более в модели они встречаться не должны. В связи с чем вопрос: tableView'шный dataSource к чему больше относится? С одной стороны отвечает за наполнение, с другой за определение ячейки (UI-элемента). Сложнее становится с добавлением пагинации, к кому (DataSource или Controller) добавлять через композицию ответственный за загрузку из сети / БД объект? Если есть свои какие-то мысли или ссылки на интересные статьи, прошу поделиться.
Почитай про MVVM, VIPER, Clean architecture. https://m.habrahabr.ru/company/badoo/blog/281162/
Обсуждают сегодня