The problem with this implementation is that you are not getting dequeued cell which will spike your's device memory once you reached up to app's allocated maximum level of memory. On every table row, a new cell is created.

Moreover cellForRowIndexPath method gives you flexibility in customising cell based on row index path.

What if you are rendering two different custom cell, which contains different views, how can you differentiate between them without using cellForRowIndex delegate's method.

Credit Goes to: stackoverflow.com

Related question with same questions but different answers