在AFNetworking中成功调用后,self.tableView reloadData无法正常工作

Jar*_*n89 9 objective-c uitableview reloaddata ios 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];
         }
     }
     ....
}
Run Code Online (Sandbox Code Playgroud)

但是如果我之后在一个单独的函数中运行[self.tableView reloadData],它就可以了.为什么会发生这种情况,而不是在教程中应该如何?

med*_*eda 40

始终在主队列上重新加载:

dispatch_async(dispatch_get_main_queue(), ^{
    [self.tableView reloadData];
});
Run Code Online (Sandbox Code Playgroud)


Dax*_*gar 20

[self.tableView reloadData];在主队列中.

dispatch_sync(dispatch_get_main_queue(), ^{
    [self.tableView reloadData];
});
Run Code Online (Sandbox Code Playgroud)

  • 这不是一个重复的答案.一个调用dispatch_ASYNC另一个调用dispatch_SYNC,非常不同. (7认同)
  • 不要担心,最重要的是你的问题解决了 (6认同)
  • 不要重复答案. (3认同)