gpt4 book ai didi

swift - AnyCancellable.store(在:) with Combine

转载 作者:行者123 更新时间:2023-12-04 00:15:45 25 4
gpt4 key购买 nike

假设您正在使用内置 .store(in:) AnyCancellable 上的方法,如下所示:

private var subscriptions = Set<AnyCancellable>()

let newPhotos = photos.selectedPhotos
newPhotos
.map { [unowned self] newImage in
return self.images.value + [newImage]
}
.assign(to: \.value, on: images)
.store(in: &subscriptions)
如果您有一个经常执行此操作的应用程序 - 发布者完成后是否会删除这些应用程序?
另外,如果我决定改用这种方法:
private var newPhotosSubscription: AnyCancellable?

self.newPhotosSubscription = newPhotos
.map { [unowned self] newImage in
self.images.value + [newImage]
}
.assign(to: \.value, on: images)
每次我再次调用该方法时,它都会覆盖 AnyCancellable,前一个会发生什么?它在被解除分配之前是否仍然完成?

最佳答案

一个 Set<T>T 一无所知,当然不知道它是一个组合 AnyCancellable . store(in:) 的文档并没有说它将监视订阅并将其删除。
因此,当它完成时不会自动发生任何事情,但您可以将其从 Set 中删除。你自己。
如果你让一个 AnyCancellable通过删除对它的所有引用来解除分配(Swift 中没有 GC),您已经取消了订阅。它不会等待完成。
特定类型的可取消对象(例如,您制作的)可以决定它总是完成并在释放之前完成。

关于swift - AnyCancellable.store(在:) with Combine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63939436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com