2016-07-13 54 views
0
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { 
    dispatch_async(dispatch_get_main_queue()) { [unowned self] in 

     //call some method in cell to pass data and update labels/images on cell 
    } 
} 

我相信willDisplayCell總是在主線程上調用。那麼我通過使用dispatch_async(dispatch_get_main_queue())達到了什麼目的。我是新來的迅速。請幫我理解這一點。提前致謝。使用dispatch_async在willDisplayCell中很有用

+0

請說明您需要的信息 –

+0

感謝您的關注。我不需要任何東西。試圖瞭解幾行代碼。 – Avi

回答

1

將主隊列調度回主隊列的想法是,「我現在不想做任何事情,但這是我在下一次運行循環中要做的事情。」在這種情況下,在顯示單元格之前調用此方法,因此它看起來像作者正在嘗試更新尚不可見的單元格,所以他們希望延遲該單元格直到單元格被實際顯示。

這取決於該塊內部發生了什麼,但這有點代碼味道。當沒有更直接和直觀的方式達到預期的效果時,我們傾向於使用這種技巧。在這種情況下,我會懷疑該調度塊中的代碼是否可能更好地屬於cellForRowAtIndexpath

此外,unowned vs weak的使用也有點令人擔憂(如果您輕彈手指,並且正在進行滾動,並且用戶在動畫仍在進行時已將該場景解散)。這可能是好的,但是這裏可能會有一種競爭條件。

相關問題