Следующий код:Почему этот код падает на iPhone 5?
func getCurrentMillis() -> Int64 {
return Int64(Date().timeIntervalSince1970 * 1000)
}
падает на [32 бит] iPhone 5 с сообщением:
EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT, subcode=0xe7ffdefe)
Я не понимаю, почему кажется, что результат этого вычисления должны вписываться в Int64
, или я Я чего-то не хватает?
StackTrace показывает это (TextProcessor.textDidChange()
звонки getCurrentMillis()
):
запрос Per OOPer, я добавить соответствующий код TextProcessor:
var timeOfLastInput: Int64 = 0
...
if getCurrentMillis() - timeOfLastInput > 150 {
textMap.cursorPosition = nil
}
Update: I» отправил отчет об ошибке Apple.
Если вы знаете, что 'Int64' доступен на 32-разрядных устройствах, почему бы вам не показать код' TextProcessor.textDidChange() '. Я могу заверить, что ваш 'getCurrentMillis()' отлично работает на 32-битных устройствах. Проблема заключается в стороне вызывающего абонента. – OOPer
'Int64' * * доступен в 32-битных системах. Проблема должна быть где-то в другом месте. –
Вы уверены, что авария находится в функции getCurrentMillis? Я не вижу этого из backtrace стека. –