EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子码=为0x0)上迅速
问题描述:
我与SwiftMoment 遇到这个问题,在这部分代码https://github.com/akosma/SwiftMomentEXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子码=为0x0)上迅速
public func moment(_ timetoken: Int64) -> Moment {
return moment(Int(timetoken/10000))
}
我不知道为什么它happenning。如果您有任何见解,请随时分享。 谢谢!
这里是timetoken值: timetoken 14915504189961350
它发生在模拟器 MacOS的塞拉利昂10.12.4
的Xcode 8.3.1 的iOS 10.3.1 iPhone 5
更新
问题犯规出现在iPhone 7
答
的iPhone 5是一个32位的装置,这意味着Int
is a 32-bit integer,和timetoken/10000
结果不适合放入一个 Int
。与其他一些编程语言相比,整数溢出在Swift中是致命的运行时错误(这很好,因为否则 你只会得到错误的结果)。
我会建议值转换为TimeInterval
,而不是 (这是一个浮点类型,实际上只是为Double
一个类型别名),然后调用
public func moment(_ milliseconds: Int) -> Moment
代替你有完整的堆栈跟踪吗? – kennytm
我有点新xcode。我已添加更多信息。我如何分享完整的堆栈跟踪? –
'timetoken'的价值是什么?错误发生在哪里? Mac/iOS设备/模拟器? 32位或64位平台? –