.sink method from Combine not working on iOS 13.3

2.3k views Asked by At

I'm using sink method to call function when variable value changed. Code working on iOS 13.2.2 but not on iOS 13.3. Function segmentedChanged not called when segmentedSelected variable changed.

public class ChooseViewModel: ObservableObject {

    @Published var segmentedSelected = Int()


    init() {
        _ = $segmentedSelected
                .debounce(for: .seconds(0.1), scheduler: DispatchQueue.main)
                .sink(receiveValue: self.segmentedChanged(indexValue:))

    }

    func segmentedChanged(indexValue segIndex: Int) {
      print(segIndex)
    }

}
1

There are 1 answers

0
Asperi On BEST ANSWER

This might be due to fixed releasing of cancelable (just an assumption). Try the following

var cancellables = Set<AnyCancellable>()

init() {
    $segmentedSelected
            .debounce(for: .seconds(0.1), scheduler: DispatchQueue.main)
            .sink(receiveValue: self.segmentedChanged(indexValue:))
            .store(in: &cancellables)
}