Cache the height of the rows (the table view can request this frequently)
Create a least-recently-used cache for the images used in the table (and invalidate all the inactive entries when you receive a memory warning)
Draw everything in the UITableViewCell‘s drawRect: if possible avoid subviews at all costs (or if you require the standard accessibility functionality, the content view’s drawRect:)
Make your UITableViewCell‘s layer opaque (same goes for the content view if you have one)
Use the reusableCellIdentifier functionality as recommended by the UITableView examples/documentation
Avoid gradients/complicated graphical effects that aren’t pre-baked into UIImages