当我在afnetworking上发送网络请求时,我会在完成块中获得结果。在这个块中,我解析并使用该类的委托,我告诉视图控制器检查数据。
VC在表视图上调用reloadData。唯一的事情是,如果我使用委托reloadData被命中或错过(有时它工作)。但是,如果我发布通知,那么它的效果非常好。
我认为这个问题与从afNetworking块调用的委托有关,因为它位于不同的线程上。我不把它放在那里,但我认为AFN会自动多线程化请求。
为什么会出现这个问题?
答案 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];