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將該工作交付到後臺,但是應該在主線程上構建實例本身。