从线程错误中调用委托方法

时间:2013-06-21 11:19:36

标签: ios afnetworking

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

VC在表视图上调用reloadData。唯一的事情是,如果我使用委托reloadData被命中或错过(有时它工作)。但是,如果我发布通知,那么它的效果非常好。

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

为什么会出现这个问题?

2 个答案:

答案 0 :(得分:1)

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

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

}

答案 1 :(得分:0)

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

   [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];