我有一个单独的线程,创建了一个UIView对象,将其插入到UITableView的数据源中,然后调用UITableView的reloadData方法。但是,由于它是一个单独的线程,无法直接调用reloadData方法,需要让主线程来完成...但是如何告诉主线程来完成呢?
谢谢!
我有一个单独的线程,创建了一个UIView对象,将其插入到UITableView的数据源中,然后调用UITableView的reloadData方法。但是,由于它是一个单独的线程,无法直接调用reloadData方法,需要让主线程来完成...但是如何告诉主线程来完成呢?
谢谢!
[self.tableView performSelectorOnMainThread:@selector(reloadData)
withObject:nil
waitUntilDone:NO];
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableview reloadData];
});'
这样怎么样?(可能无法编译,我正在打字)
- (void) callReloadData
{
if ([NSThread isMainThread]) {
@synchronized (self.tableView) {
[self.tableView reloadData];
}
} else {
[self performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES];
}
}
waitUntilDone:
为YES,performSelectorOnMainThread:
将立即调用其选择器,因此该代码毫无意义。(我不知道您为什么要加入synchronized
块。) - titaniumdecoy