У меня есть класс с таймером (обновление каждую миллисекунду).
class TimeCount {
let currentTimePublisher = Timer.TimerPublisher(interval: 0.001, runLoop: .main, mode: .common)
let cancellable: AnyCancellable?
init() {
self.cancellable = currentTimePublisher.connect() as? AnyCancellable
}
deinit {
self.cancellable?.cancel()
}
}
У меня также есть список () объектов TimerView
List() {
ForEach(self.timers) { timer in
TimerPlusView(timer: timer)
}
}
И внутри каждого объекта у меня есть текст, который обновляет его содержимое, слушая таймер
Text("\(currentTime.timeIntervalSince(timer.time ?? Date()))")
.font(.largeTitle)
.fontWeight(.bold)
.foregroundColor(.black)
.opacity(0.5)
.onReceive(timeCount.currentTimePublisher) { newCurrentTime in
self.currentTime = newCurrentTime
}
Дело в том, что после (не во время) прокрутки списка в течение примерно 100 пикселей таймер перестает работать, а метки перестают обновляться, и я понятия не имею, почему.
Поведение, которое я получаю:
UPD: вот ссылка на полный проект для справки. https://www.dropbox.com/s/47zoizfqp6upz1e/TimerMinimal.zip?dl=0