无法解释的Swift EXC_BREAKPOINT崩溃

时间:2018-10-20 02:36:37

标签: ios swift

考虑以下代码:

@objc public func endAllSessionsWithReason(_ reason: Reason, completion completionBlock: (() -> Void)?) {
    let allActiveSessions = self.activeSessions.map({$0.value})

    for session in allActiveSessions {
        if (reason != .undetermined) {
            session.reason = reason
        }

        self.endSession(session, deleteSession: false)
    }

    let allActiveSessionIds = allActiveSessions.map({$0.sessionId})
    self.deleteSessionsWithIds(sessionIds: allActiveSessionIds, completion: completionBlock)
}

Crashlytics在此代码中报告以下崩溃:

Crashed: com.apple.main-thread
EXC_BREAKPOINT 0x0000000103032788
SessionController.swift line 183
specialized SessionController.endAllSessionsWithReason(_:completion:)

第183行指的是:

let allActiveSessionIds = allActiveSessions.map({$0.sessionId})

几天以来,我一直在尝试找出可能导致此崩溃的原因,但一直无法复制。我在这里看不到任何隐式的拆包或可选内容,但是如果重要的话,sessionId是会话对象中的非可选值。

self.activeSessions也是一个非可选值,但可以为空。

我使用的是Swift 4.1,当运行各种不同版本的iOS 10、11和12的iOS设备上发生崩溃时,该应用程序确实支持某些iOS 9版本,但尚未报告(尽管可能无关紧要,因为该应用的iOS 9用户群很小( )。

0 个答案:

没有答案