Забудьте о таймерах, они просто слишком много работают в этом случае.
Просто создайте метод deselectSelectedCell и вызовите его с помощью асинхронного вызова:
[tableView performSelector:@selector(deselectSelectedCell) withObject:nil afterDelay:2.0];
и метод:
- (void)deselectSelectedCell{
[tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:YES]
}
Это отменит выделение ячейки, конечно.
Если вы хотите, чтобы ячейка оставалась выделенной, возможно, вам следует изменить цвет содержимого viewView.