關於@escaping,要先從程式跑的順序&ARC 看。
基本上主執行緒func 跑完,裡面程式就會被清除。用completionHandler 會在其他執行緒跑,跑完才會呼叫completionHandler內的程式~
☞ 主執行序主要管控UI顯示畫面。因抓資料要時間,總不能整個畫面停住,就是在等抓資料吧…所以抓資料程式才需在背景執行!
好不容易抓完資料,但會發現沒辦法 return 到外面!這意味著就算背景抓好資料,也傳不出去😱,做白工。
題外話,你當然可以把UI程式直接寫進 completionHandler 裡面。但這樣就把API 寫死了,這樣就不符合工程師懶到底的個性(同樣類型程式寫一次就好,很亂也很累),因此不建議這樣寫!
這時今天主角@escaping 登場,他就可以完美解決上述問題~
見下方程式,就可以在55 or 57 行,把completionHandler 背景抓好的結果,傳到外面使用~
以上就是目前我理解的@escaping ,未來有不同體悟再續更~
可以參考以下連結: