当我在 afnetworking 上发送网络请求时,我会在完成块中得到结果。在这个块中,我解析并使用该类的委托告诉视图控制器检查数据。
VC 在表视图上调用 reloadData。唯一的事情是,如果我使用委托 reloadData 会命中或错过(有时它会起作用)。但是,如果我发布通知,那么它会完美运行。
我认为这个问题与从 afNetworking 块调用的委托有关,因为它位于不同的线程上。我没有把它放在那里,但我认为 AFN 会自动对请求进行多线程处理。
为什么会出现这个问题?
当我在 afnetworking 上发送网络请求时,我会在完成块中得到结果。在这个块中,我解析并使用该类的委托告诉视图控制器检查数据。
VC 在表视图上调用 reloadData。唯一的事情是,如果我使用委托 reloadData 会命中或错过(有时它会起作用)。但是,如果我发布通知,那么它会完美运行。
我认为这个问题与从 afNetworking 块调用的委托有关,因为它位于不同的线程上。我没有把它放在那里,但我认为 AFN 会自动对请求进行多线程处理。
为什么会出现这个问题?
@Durgaprasad 是对的。可能是他的副本。还是给它加了一些条件。试试,
if ([NSThread isMainThread])
{
[self.tableView reloadData];
}
else
{
[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
}
我认为您在辅助线程上称为 afnetworking。从那个调用[tableView reloadData];
这将导致崩溃,因为您无法从任何其他线程更改 UI。您需要使用主线程。试试这个。
[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];