AppWillTerminate 调用的函数崩溃

Crash on function called by AppWillTerminate

我收到很多报告称 applicationWillTerminate 调用了一个函数,不完全是因为这个,但我觉得问题的根源可能与此有关。我从 Fabric.io Crashlytics 获得这些报告。无论如何,导致崩溃的报告行如下:

return Int(NSDate().timeIntervalSince1970 * 1000)

此代码在大多数情况下也能正常工作,但在崩溃列表中排名靠前。谁能给我任何提示,说明为什么会崩溃。

我的猜测是您的崩溃来自 32 位设备,其中 Int(NSDate().timeIntervalSince1970 * 1000) 是不可能的,因为 NSDate().timeIntervalSince1970 * 1000 大于 Int.max

这里有一些 playground 代码可以证明这是真的:

let i = Int32.max // max size of Int on 32-bit
i // 2147483647
let j = NSDate().timeIntervalSince1970 * 1000
j // 1486250171084.633

然后我们可以像这样继续测试它:

// let's try to simulate the crash
Int32(j)
// yup, crash: 
// "Double value cannot be converted to Int32 because the result would be greater than Int32.max"