Best practice is for your implementation to cellForRowAtIndexPath:do as little work as possible. In fact, this really should not do any work other than populating the instance with the UITableViewCelldata it needs to display.
You have to use cached UITableViewCell, so you don’t have to select a new cell every time. If you can parse and in a separate thread and parse the data ready for presentation, available for cellForRowAtIndexPath:, you should not have performance issues.
You did not say if you are using a custom subclass UITableViewCell, but if you are, deep view hierarchies can also pose a performance problem, since each view in the hierarchy is reversed. Bad, you can make UITableViewCells the better.
, .