Combine 的 .sink 方法不适用于 iOS 13.3
.sink method from Combine not working on iOS 13.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)
}
}
这可能是由于固定释放可取消(只是一个假设)。尝试以下
var cancellables = Set<AnyCancellable>()
init() {
$segmentedSelected
.debounce(for: .seconds(0.1), scheduler: DispatchQueue.main)
.sink(receiveValue: self.segmentedChanged(indexValue:))
.store(in: &cancellables)
}
我正在使用 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)
}
}
这可能是由于固定释放可取消(只是一个假设)。尝试以下
var cancellables = Set<AnyCancellable>()
init() {
$segmentedSelected
.debounce(for: .seconds(0.1), scheduler: DispatchQueue.main)
.sink(receiveValue: self.segmentedChanged(indexValue:))
.store(in: &cancellables)
}