[問題] Firebase 使用 Main Queue 時機?

作者: bbonline229 (bbonline229)   2018-11-19 23:51:39
最近看了幾部教學影片
發現每部操作 firebase database 都不太一樣
有的影片會說如果你讀資料回來, 需要更動 UI, 但沒有
到 main queue 裡做, app 就會 crash
有的影片一樣讀完資料會更動 UI, 卻連個 main queue 詞都沒提到
案例大概是, 讀取 firebase 的資料完
要更動 UI ( tableview.reloadData() 之類的)
理論上我應該到 main queue 去做更動 UI 的動作吧?
之前使用 URLSession 練習去讀取一些資料
更動 UI 會到 main queue 去做
對 GCD 這部分理解還很淺
目前理解大概是
使用 URLSession 做網路請求時, 預設會跳到 background queue
然後 call back 回來, 要更動 UI 就須跳回 main queue 去做
讀取 firebase 的資料應該也一樣吧?
另外還有個疑問, xCode9 開始有個 Main Thread Checker 的東西
就是可以幫你檢查哪邊需要到 main queue 執行
可是再使用 firebase 時, call back 回來, 更動 UI, 卻連個 warning 都沒有
是不是代表並不需要切到 main queue ?
這部分還請前輩多指教, 或者提供幾個關鍵字給小弟研究
作者: yuanruo (罪を憎んで人を憎まず)   2018-11-20 00:01:00
一般第三方套件或服務~都會好心的幫你用main thread回調蘋果自家的網路層api包含底層的CFNetwork 是丟到queue時是丟被背景去做~回來時他要你自己去handle 在那個thread
作者: bbonline229 (bbonline229)   2018-11-20 00:07:00
所以 frebase 是不是並不需要考慮到執行緒的問題?
作者: uranusjr (←這人是超級笨蛋)   2018-11-20 09:14:00
永遠記得回 main queue 做就是了, 不要想那麼多除非文件有寫否則都不保證, 哪天行為變了你還要修, 不如一開始就防呆防到底, 效能上並沒有顯著差異
作者: bbonline229 (bbonline229)   2018-11-20 09:34:00
好的感謝,我會再加強這部分觀念
作者: DarkNT (紐太)   2018-11-20 10:13:00
所有更新UI的動作都必須在Main Queue做。跟Firebase應該沒什麼關係

Links booklink

Contact Us: admin [ a t ] ucptt.com