2015-09-09 59 views

回答

1

作爲一個基本的規則,你應該:

  1. 只有執行UI操作(如設置視圖的背景顏色或更改標籤的文本)。
  2. 在後臺線程上執行諸如密集循環等長操作。

默認情況下,除非另有說明,否則應用中的幾乎所有內容都將發生在主(UI)線程上。您是正確的,因爲您可以使用dispatch_async在後臺線程上執行循環以釋放用於處理UI的主線程。你可以例如(在斯威夫特):

// Process something large, jump to background thread: 
dispatch_async(dispatch_get_global_queue(0, 0), { 

    // Long loop... 
    for var i = 0; i < 10000; ++i { 
     // ... 
    } 

    // When finished, jump back to main thread to update UI with results: 
    dispatch_async(dispatch_get_main_queue(), { 
     myLabel.text = "Finished processing!" 
    }) 

})