I see what you're saying, but that's not actually how those 2 table view data source methods work.

Most importantly, `tableView:heightForRowAtIndexPath:` is called **first** for every row before `tableView:cellForRowAtIndexPath:` is called. And when the height method is called, it does not automatically call the cell method  (although, you could do that yourself) -- it just gives you the section and row number (index path) for the cell it wants you to return the height for.

The reason why you don't necessarily want to call `tableView:cellForRowAtIndexPath:` from `tableView:heightForRowAtIndexPath:` is because *typically* (e.g. before auto layout) building and returning the cell is more expensive than necessary just to return the height for the row. With Auto Layout, it turns out that you basically have to build the cell in order to get the height, so things have changed...but as you can see by the code, there are still some small differences in the implementation of the 2 methods where for maximum efficiency it's better to keep them separate.