概述
今天在一个页面构建UI时,使用了 lazy
关键字,但是跳转到该页面时,出现了如下问题
Thread 1: EXC_BAD_ACCESS (code=2, address=0x16bb8bfe0)
分析
通常这种 crash 的原因是在非主线程中对 UI 进行了操作
通过查资料发现,原来 lazy 不是线程安全的。以下是苹果的原话
NOTE
If a property marked with the lazy modifier is accessed by multiple threads simultaneously and the property has not yet been initialized, there is no guarantee that the property will be initialized only once.
解决方案
将涉及到 UI 的操作移到主线程中即可解决问题