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

看板MacDev作者 (bbonline229)時間6年前 (2018/11/19 23:51), 6年前編輯推噓1(109)
留言10則, 4人參與, 6年前最新討論串1/1
最近看了幾部教學影片 發現每部操作 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 ? 這部分還請前輩多指教, 或者提供幾個關鍵字給小弟研究 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.195.56 ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1542642701.A.08F.html ※ 編輯: bbonline229 (123.195.195.56), 11/19/2018 23:52:43 ※ 編輯: bbonline229 (123.195.195.56), 11/19/2018 23:53:41

11/20 00:01, 6年前 , 1F
一般第三方套件或服務~都會好心的幫你用main thread回調
11/20 00:01, 1F

11/20 00:02, 6年前 , 2F
蘋果自家的網路層api包含底層的CFNetwork 是丟到queue時
11/20 00:02, 2F

11/20 00:03, 6年前 , 3F
是丟被背景去做~回來時他要你自己去handle 在那個thread
11/20 00:03, 3F

11/20 00:07, 6年前 , 4F
所以 frebase 是不是並不需要考慮到執行緒的問題?
11/20 00:07, 4F

11/20 09:14, 6年前 , 5F
永遠記得回 main queue 做就是了, 不要想那麼多
11/20 09:14, 5F

11/20 09:14, 6年前 , 6F
除非文件有寫否則都不保證, 哪天行為變了你還要修, 不如
11/20 09:14, 6F

11/20 09:15, 6年前 , 7F
一開始就防呆防到底, 效能上並沒有顯著差異
11/20 09:15, 7F

11/20 09:34, 6年前 , 8F
好的感謝,我會再加強這部分觀念
11/20 09:34, 8F

11/20 10:13, 6年前 , 9F
所有更新UI的動作都必須在Main Queue做。
11/20 10:13, 9F

11/20 10:13, 6年前 , 10F
跟Firebase應該沒什麼關係
11/20 10:13, 10F
文章代碼(AID): #1RyjmD2F (MacDev)
文章代碼(AID): #1RyjmD2F (MacDev)