Я использую класс Timer для выполнения определенного кода каждые x секунд. Когда что-то происходит в этом коде, я хочу аннулировать таймер, тем самым останавливая «цикл».Как отключить таймер без заданной переменной
мне удалось это сделать, выполнив следующие действия:
let timer = Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: { timer in
//when something happens
timer.invalidate()
})
Однако, я не использую этот таймер нигде в моем коде, так Xcode дает мне предупреждение:
Инициализация таймера неизменяемого значения никогда не использовалась; рассмотрите замену с присвоением на '_' или удалите ее
Очевидно, что это не останавливает мое приложение, но я хотел бы избавиться от предупреждения.
Я знаю, что только с помощью:
Timer.scheduledTimer(withTimeInterval: 5, repeats: true, block: { timer in
//do stuff
})
все еще будет работать, но тогда я не знаю, как аннулирует таймер. Просто позвонить invalidate()
внутри закрытия не работает (длинный выстрел я знаю, но я все равно попробовал).
Как правило, при рассмотрении вопроса о SO, люди используют глобальные переменные таймера, что упрощает его аннулирование. Однако я не хочу этого делать, поскольку это не обязательно, потому что, опять же, я не использую объект таймера, когда он закончен.
Я огляделся, думая, что это будет довольно распространенная проблема, но я не нашел ничего полезного. Может ли кто-нибудь пролить свет на то, как я могу эффективно аннулировать таймер без установки переменной?
Ах, да, я забыл о блоке var. Теперь я понимаю, почему это необходимо;) –
Я приму этот ответ, через десять минут, как только это позволит мне –
@BenjaminLowry Приветствуем друга :) –