近期一个线上bug得到的教训

920 阅读1分钟

之前写了个bug,firebase上提示

已崩溃:com.apple.main-thread
EXC_BREAKPOINT 0x00000001055a7a34

没有具体错误,又因为是导航这块的东西,不好测试,于是按照猜测原因改了下,上线之后结果还是崩溃

Fatal Exception: NSInternalInconsistencyException

Modifications to the layout engine must not be performed from a background thread after it has been accessed from the main thread.

这一下就懵逼了,我什么时候在子线程刷新UI了?不可能啊,测试完全复现不了

但是我依然加上了

DispatchQueue.main.async

希望这次上线不再崩溃(上架之后,会回来更新文章)

这次线上崩溃,有这么几个启示
1、之前没有详细提示,后来有了详细的提示,是我进行了更完善的封装,这样每个方法都是独立的功能,就连firebase都可以清晰的找到错误原因;
2、测试不到的地方,一定要进行尽可能多的防护,哪怕冗余也不能有线上bug;
3、有的bug,可以测出来,更多的时候,要review自己的代码才能发现细节bug。

ps: 果然不再崩溃