0

当我在 afnetworking 上发送网络请求时,我会在完成块中得到结果。在这个块中,我解析并使用该类的委托告诉视图控制器检查数据。

VC 在表视图上调用 reloadData。唯一的事情是,如果我使用委托 reloadData 会命中或错过(有时它会起作用)。但是,如果我发布通知,那么它会完美运行。

我认为这个问题与从 afNetworking 块调用的委托有关,因为它位于不同的线程上。我没有把它放在那里,但我认为 AFN 会自动对请求进行多线程处理。

为什么会出现这个问题?

4

2 回答 2

1

@Durgaprasad 是对的。可能是他的副本。还是给它加了一些条件。试试,

if ([NSThread isMainThread]) 
{
  [self.tableView reloadData];
}
else 
{
   [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];

}
于 2013-06-21T11:33:31.620 回答
0

我认为您在辅助线程上称为 afnetworking。从那个调用[tableView reloadData];这将导致崩溃,因为您无法从任何其他线程更改 UI。您需要使用主线程。试试这个。

   [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
于 2013-06-21T11:27:41.123 回答