Overall this is a great article. It does a good job outlining what UITableView does and why it's built the way it is. If you're new to iOS and wondering why UITableView's delegate and dataSource protocols are structured the way they are, it's a good idea to take a deep dive and understand them better. As others have mentioned, data sources and delegates aren't unusual in Objective-C. They're everywhere, and they enforce a separation of view logic and data that is at the heart of MVC.<p>This is a great exercise, but please, please don't use your hand-rolled UITableView in your apps.<p>If UITableView doesn't do what you need, create a UICollectionView. If you find the data source protocol frustrating to use, create a provider object that maps your (array/dictionary/weird-ass data structure) onto the dataSource protocol. (In desktop Mac programming, NSArrayControllers serve this purpose.) Don't re-implement UITableView. The things you could potentially screw up are many, and when some other developer inherits your code and tries to add editing, multiple selection, re-ordering, etc..., they're going to be pissed.