Это для MacOS. Я пытаюсь инкапсулировать издателя Timer в класс, чтобы я мог добавить автономную функциональность. У меня есть следующий код
import Combine
class MyTimer{
let subscription: AnyCancellable
var count: Int = 0
init(){
subscription = Timer.publish(every:0.1,on:.main,in:.default).autoconnect()
.sink{_ in
self.count += 1
print(self.count)
}
}
deinit {
subscription.cancel()
print("done")
}
}
Класс называется так:
let timer = MyTimer()
И остановился, установив таймер на nil
.
К сожалению, я получаю ошибка
'self', захваченная замыканием до инициализации всех членов
ошибка. Если я уберу бит count
в раковине, он будет работать нормально. Я попытался переместить содержимое init
в метод start()
, и это сработало, но deinit()
никогда не вызывался, когда таймер был установлен на nil
. В настоящее время я использую глобальную переменную для подсчета в качестве обходного пути, но это не очень удовлетворительно, так как больше кода будет go в этот класс. Любые намеки, как я могу это сделать? Я посмотрел на несколько других подобных вопросов, но ни один из них не кажется актуальным. Спасибо!