Swift 4.2迁移后出现奇怪的崩溃

时间:2019-07-09 15:22:11

标签: crash fatal-error unrecognized-selector

应用随机崩溃,有时在应用启动时崩溃。

最近,我们已使用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.

帮助表示赞赏。谢谢。

Regex demo

0 个答案:

没有答案