[網路應用] iOS App 網路資料下載 -URLSessionDataTask & Operation queue

資策會 APP Developer 行動開發工程師養成班

--

▍URLSessionDataTask

下載照片 DataTask,裡面的參數有一個是 delegateQueue
delegateQueue 實際上就是一個 operationQueue

delegateQueue 為 operationQueue

delegateQueue 會影響 block 下載

Q:作業下載完成後,要在哪一個 Queue 裡面執行後面的程式碼?
A:這個問題主要是由 delegateQueue 來做控制

前面有提過,上圖的藍色區域程式碼是在背景執行,因為 delegateQueue 是 nil 空值,所以會在背景中執行,如果更新到畫面,還需要放回 main queue

OperationQueue.main

當 delegateQueue 後方是 OperationQueue,但他是 Main queue 的話,這個 block 被執行到的時候,就會變成是在 Thread 1 執行。

OperationQueue()

如果是自己建立的 operation,就會在背景執行緒中執行,如上圖所示

Operation 一定要是 OperationQueue.main

這個 Queue 只有ㄧ個,因為主要執行緒只有一個,全部人一起共用 OperationQueue.main

--

--

陳冠名|Michelle Chen Chen
Adream4ever

Brave Together App 產品負責人,現職物聯網科技領域的 iOS Developer,歡迎交流~!