UIRefreshControl: UITableView 'preso' durante a atualização

Estou tendo um problema ao implementar o UIRefreshControl - em que, quando você desce, o 'blob' funciona perfeitamente bem e o giratório de atualização funciona bem, mas o tableView não rola até o girador durante a atualização. Em vez disso, ele permanece onde estava até que a atualização esteja concluída, quando ela retorna ao topo da tela.

O código que faz a atualização é:

- (void)viewDidLoad {
    self.refreshControl = [[UIRefreshControl alloc] init];
    [self.refreshControl addTarget:self action:@selector(refreshView:)forControlEvents:UIControlEventValueChanged];
}

- (void)refreshView:(UIRefreshControl *)refresh  {
    dispatch_async(dispatch_get_main_queue(), ^{
        (...code to get new data here...)
        [self.refreshControl endRefreshing];
    }
}

Eu descobri que sem o dispatch_async, até mesmo o spinner de atualização não funciona - e o bit que foi puxado para baixo aparece apenas branco

Alguém tem alguma pista do que eu poderia estar fazendo errado? Todos os exemplos de implementação que encontrei parecem corresponder ao que estou fazendo e não encontrei nada nos documentos da API que sugerem que estou perdendo tudo

questionAnswers(1)

yourAnswerToTheQuestion