Есть ли хороший способ обработать массив 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?
}