первый не работает, потому что вы должны установить сильную ссылку на него
tableView.dataSource = TableViewDataSource();
а у других здесь
var dataSource:TableViewDataSource!;
//
Если вы смотрели файл реализации делегата источника данных, он объявляется так:
weak open var dataSource:UITableViewDataSource?
осторожно смотрит на слабый , поэтому он не сохраняет присвоенные ему переменные, поэтому на другой экземпляр класса должны быть строго указаны ссылки
![enter image description here](https://i.stack.imgur.com/D6SOJ.png)