dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);//
dispatch_async(backgroundQueue, ^(void) {
NSLog(@"BackgroundQueue-makeUpcomingCell");
// storeLiveAndUpcomingMatches
[[TVStoredData sharedInstance] makeRunnningCell];
[[TVStoredData sharedInstance] makeUpcomingCell];
dispatch_sync(dispatch_get_main_queue(),^{
NSLog(@"MainQueue-makeUpcomingCell");
[tblView ReloadData];
});
});
我正在尝试上面的代码,在重新加载Table视图之前,通过GCD创建没有主线程的多个单元格。这些单元格是成功创建的,但是当它们在cellforRowatIndexpath中返回时,只显示单元格的图像视图,而不显示任何标签,并且按钮在单元格中可见。
我在接下来的15-20秒内滚动桌子,突然间所有标签和按钮开始可见。
似乎在数组中存储单元格需要启动其控制器。
答案 0 :(得分:0)
1)您无法在其他主题中更新UI。
2)您正在将强变量用于块中。
答案 1 :(得分:0)
除非另有说明,否则所有UIKit(这肯定包括UITableViewCell
)都应该被认为是#34;主线程。"如果你要做一些昂贵的工作来生成单元格(下载资源,渲染图像等),你可以使用GCD将该工作发送到后台,但是应该自己构建UITableViewCell
个实例在主线上。