I am having a very strange problem when calculating the height of a UITableViewCell.
It seems like if I instantiate an NSAttributedString with
Hard to say, but my guess is that the problem is #20. That seems to cause the code to reenter CFRunLoopRun which then triggers queued table events that weren't supposed to run until after reloadData was finished.
Suggested work-around: create your strings during initialization and store them in an NSArray so that they can be retrieved when needed by heightForRowAtIndexPath.