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];
});