Memory leaks SwiftUI和ObserveObject视图模型会导致内存泄漏,任何示例,我应该如何在ObserveObject中使用Combine

Memory leaks SwiftUI和ObserveObject视图模型会导致内存泄漏,任何示例,我应该如何在ObserveObject中使用Combine,memory-leaks,swiftui,combine,observableobject,Memory Leaks,Swiftui,Combine,Observableobject,我有这样的示例ViewModel,我在仪器中看到的是,类似的ViewModel正在泄漏内存 class SearchViewModel<T>: ObservableObject { @Published var searchTerm : String = "" @Published var results: [T] = [] private var disposables = Set<AnyCancellable>() init()

我有这样的示例ViewModel,我在仪器中看到的是,类似的ViewModel正在泄漏内存

class SearchViewModel<T>: ObservableObject {

    @Published var searchTerm : String = ""
    @Published var results: [T] = []

    private var disposables = Set<AnyCancellable>()

    init() {

        _searchTerm.projectedValue
        //$searchTerm
            .debounce(for: .milliseconds(350), scheduler: DispatchQueue.global())
            .flatMap { [weak self] term -> AnyPublisher<[T], Never> in

                 self?.search(by: term) ?? Empty().eraseToAnyPublisher()
            }
            .print("searching")
            .receive(on: DispatchQueue.main)
            .assignNotRetain(to: \.results, on: self)
            //.assign(to: \.results, on: self)
            .store(in: &disposables)

    }

    open func search(by term: String) -> AnyPublisher<[T], Never> {
        fatalError()
    }
}
class SearchViewModel:ObservableObject{
@已发布的var searchTerm:String=“”
@已发布的var结果:[T]=[]
私有var可处置资产=集合()
init(){
_searchTerm.projectedValue
//$searchTerm
.debounce(用于:。毫秒(350),调度程序:DispatchQueue.global()
.flatMap{[弱自]项->中的任何发布者
self?.search(by:term)??Empty().eraseToAnyPublisher()
}
.打印(“搜索”)
.receive(在:DispatchQueue.main上)
.assignNotRetain(收件人:\.results,在:self上)
//.分配(到:\.结果,在:self上)
.存储(在:&一次性用品中)
}
打开func搜索(按术语:字符串)->AnyPublisher{
法塔莱罗()
}
}
我在flatMap中添加了[weak self],并将.assign(to)更改为custom.assignNotRetain(to),它将sink与[weak self]一起使用。它泄漏较少(有deinit调用),但init调用多于deinit调用!这将导致一次性:设置为不解除分配/取消订阅

它只是一个示例视图模型类似的方法,调用serivce,然后通过sink观察输出,分配和更新@Published所有发生泄漏的内存和一次性设备通常都不会被释放,所以,我应该手动取消view onDisappear中的任何Cancelable吗