来自Combine 的.sink 方法不适用于iOS 13.3

Okz*_*pes 4 xcode ios swiftui combine ios13.3

当变量值改变时,我使用 sink 方法调用函数。代码适用于 iOS 13.2.2 但不适用于 iOS 13.3。当 segmentedSelected 变量改变时,函数 segmentedChanged 不会被调用。

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)
    }

}
Run Code Online (Sandbox Code Playgroud)

Asp*_*eri 14

这可能是由于可取消的固定释放(只是一个假设)。尝试以下

var cancellables = Set<AnyCancellable>()

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