[问题] 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