应用随机崩溃,有时在应用启动时崩溃。
最近,我们已使用xcode 10.2将应用程序从swift 4更新到swift 4.2,在迁移之后,这些随机崩溃开始发生。
NSException:-[__ NSCFNumber objectForKey:]:无法识别的选择器已发送到实例0x8000000000000000
-[_ NSCoreDataTaggedObjectID objectForKey:]:无法识别的选择器已发送到实例0x8000000000000000
在Xcode 10.1中没有发生此问题。在某些堆栈溢出答案中,建议更改优化级别(对速度进行优化以优化-O),但是我们不确定是否可以解决此问题。
private var recentPresence: [String: AwUserPresenceAppStatus] = [:]
func getPresence(forUserId userId: String) -> AwUserPresenceAppStatus? {
if let recent = recentPresence[userId] {
return recent
} else if let cloned = PresenceCloner.shared.getPresence(forUserId: userId) {
return cloned
} else {
return nil
}
}
这是导致问题的功能。它接受string
并尝试在最近的dictionary
中查找值。字典和函数都保存在一个单例类中。
我们想知道为什么会发生随机崩溃。我们尝试了检测,启用了僵尸,但我们无法复制崩溃。
见解:
1. All Crashes pointing the same address (0x8000000000000000)
2. iPhone XS Max Crashing a-lot.
3. Since this function inside a singleton, there is no way for deallocation.
4. Sometime dictionary can be accessed from background thread as well.
5. will this crash happens bcoz of Race Conditions.
帮助表示赞赏。谢谢。