【发布时间】:2021-04-16 16:31:17
【问题描述】:
假设以下简化代码-sn-p
import Foundation
import Combine
public class NetworkFetch {
fileprivate var networkPipelines : Set<AnyCancellable> = []
public func loadDataFor(url : URL)
{
URLSession.shared.dataTaskPublisher(for: url)
.map { $0.data }
.decode(type: City.self, decoder: JSONDecoder())
.eraseToAnyPublisher()
.sink(receiveCompletion: {_ in print("Finish")},
receiveValue: { v in
print("\(c)\n")
}
)
.store(in: &networkPipelines)
}
}
对于 loadDataFor 的每次调用,都会生成一个新的 combine-pipeline 并将其添加到 networkPipelines 容器中。这个容器会随着时间的推移而增长。
一旦 URLSession-pipeline 获取所有数据,从该容器中删除此类 URLSession-pipeline 的正确方法是什么?
【问题讨论】: