[網路應用] iOS App 網路資料下載 -URLSessionDataTask & Operation queue
資策會 APP Developer 行動開發工程師養成班
Published in
Jan 5, 2022
▍URLSessionDataTask
下載照片 DataTask,裡面的參數有一個是 delegateQueue
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