0
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]; 
       }); 
      }); 

之前,我想上面的代码创建通过GCD和重装表视图之前没有主线程多单体。这些单元格已成功创建,但是当这些单元格在cellforRowatIndexpath中返回时,只有单元格的图像视图不显示任何标签,并且按钮在单元格中可见。多的UITableViewCell创建到GCD重装UITable视图

我在接下来的15-20秒内滚动表格,突然间所有的标签和按钮都开始可见。

看起来像存储在阵列中的单元格需要一些来启动它的控制器。

+0

看起来像ARRAY中的存储单元需要一些来启动它的控制器。请在这个问题上建议我。 – Praveen 2015-04-02 12:49:44

回答

0

1)你不能更新其他线程,然后主要的用户界面。

2)您正在使用强变量块。

+0

谢谢复古.. 我调试索引路径行中的单元格中的代码,并有那里所有的控制器可用但单元格中不可见。并在15-20秒后开始可见。 – Praveen 2015-04-02 12:55:59

+0

因为你的UI代码没有运行到主线程中,这个方法的动机是什么? – Retro 2015-04-02 12:57:39

+0

如果UI代码没有运行,那么只要重新加载TAbleView,UIImageView如何显示图像。 – Praveen 2015-04-02 13:00:56

0

除非另有说明,否则UIKit的所有内容(当然包括UITableViewCell)应被视为“仅限主线程”。如果您为了生成单元格(下载资源,渲染图像等)而需要执行一些昂贵的工作,则可以使用GCD将该工作交付到后台,但是应该在主线程上构建实例本身。