I'm curious if there is a way to not redraw the rows all the time, but do it only on row selection change?!
The table view calls drawSelectionInRect:
exactly once after the selection has changed. (Provided that there are no excessive setNeedsDisplay calls)
drawRect:
on the other hand has to be called at least twice (1x for the deselected row and 1x for the newly selected one).
I noticed, that NSTableView
occasionally also redraws "in-between" rows when the selection changes. (e.g. rows 3-5 when the selection changes from row 2 to 6).