self.tableView reloadData не работает после успешного вызова в AFNetworking

У меня есть класс, который работает аналогично компоненту AFHTTPSessionManager этого учебника http://www.raywenderlich.com/59255/afnetworking-2-0-tutorial

Однако, [self.tableView reloadData] не работает для меня.

У меня менеджер реализован так:

-(void) refresh{
     manager = [[AFHTTPSessionManager...] iniwithBaseURL:...];
     [manager Get:... parameters:... success:^(NSURLSessionDataTask *task, id responseObject){
         //test success values in responseObject
         if(test){
             //Get table data
             [self.tableView reloadData];
         }
     }
     ....
}

Тем не менее, если я потом запущу [self.tableView reloadData] в отдельной функции, он работает просто отлично. Почему это происходит, а не как в учебнике?

2 ответа

Решение

Написать [self.tableView reloadData];в основной очереди.

dispatch_sync(dispatch_get_main_queue(), ^{
    [self.tableView reloadData];
});

Всегда перезагружать в основной очереди:

dispatch_async(dispatch_get_main_queue(), ^{
    [self.tableView reloadData];
});
Другие вопросы по тегам