我在下面的行中得到一个崩溃EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000000
,不知道为什么。
let personManager = PersonManager.shared ?? PersonManager(user: firebaseUser)
。。。在此代码块中。。。
AppUtils.getFirebaseUser { firebaseUser in
let personManager = PersonManager.shared ?? PersonManager(user: firebaseUser)
if personManager.peopleHaveLoaded() {
...
} else {
...
}
}
PersonManager.Swift
class PersonManager: NSObject {
public static var shared: PersonManager?
init(user: User) {
...
super.init()
PersonManager.shared = self
}
...
}
我假设会发生的情况是,如果PersonManager.shared
是nil
,那么nil合并运算符将调用init
函数,因此无论哪种情况,它都保证有一个实例。
我知道,当您有一个悬空指针时,您通常会看到崩溃,但我认为nil合并运算符??
可以解决这个问题。 你知道为什么它会崩溃吗?
可能是种族问题。 同时在两个线程上访问PersonManager.Shared。