#6 swift “@escaping” 淺談

Hank Chen
Sep 21, 2021

我們在打func時,常會看到 @escaping 如下圖,但這是什麼意思呢?我嘗試把我理解的分享出來~

關於@escaping,要先從程式跑的順序&ARC 看。

基本上主執行緒func 跑完,裡面程式就會被清除。用completionHandler 會在其他執行緒跑,跑完才會呼叫completionHandler內的程式~

☞ 主執行序主要管控UI顯示畫面。因抓資料要時間,總不能整個畫面停住,就是在等抓資料吧…所以抓資料程式才需在背景執行!

好不容易抓完資料,但會發現沒辦法 return 到外面!這意味著就算背景抓好資料,也傳不出去😱,做白工。

題外話,你當然可以把UI程式直接寫進 completionHandler 裡面。但這樣就把API 寫死了,這樣就不符合工程師懶到底的個性(同樣類型程式寫一次就好,很亂也很累),因此不建議這樣寫!

這時今天主角@escaping 登場,他就可以完美解決上述問題~

見下方程式,就可以在55 or 57 行,把completionHandler 背景抓好的結果,傳到外面使用~

--

--