Есть ли хороший способ обработать массив AnyCancellable
, чтобы удалить сохраненный AnyCancellable
после его завершения / отмены?
Скажите, у меня есть
import Combine
import Foundation
class Foo {
private var cancellables = [AnyCancellable]()
func startSomeTask() -> Future<Void, Never> {
Future<Void, Never> { promise in
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(2)) {
promise(.success(()))
}
}
}
func taskCaller() {
startSomeTask()
.sink { print("Do your stuff") }
.store(in: &cancellables)
}
}
Каждый раз taskCaller
вызывается, AnyCancellable
создается и сохраняется в массиве. Я хотел бы удалить этот экземпляр из массива после его завершения, чтобы избежать потери памяти.
Я знаю, что могу сделать что-то подобное вместо массива
var taskCancellable: AnyCancellable?
И сохранить отменяемый, выполнив:
taskCancellable = startSomeTask().sink { print("Do your stuff") }
Но это закончится, чтобы создать несколько отдельных отменяемых и может загрязнить код. Я не хочу такой класс, как
class Bar {
private var task1: AnyCancellable?
private var task2: AnyCancellable?
private var task3: AnyCancellable?
private var task4: AnyCancellable?
private var task5: AnyCancellable?
private var task6: AnyCancellable?
}