iOS Swift Combine:取消一组

问题描述 投票:1回答:2

如果我已将可取消集存储到ViewController中:

private var bag = Set<AnyCancellable>()

其中包含多个订阅。

1-我应该在deinit中取消订阅吗?还是自动完成工作?

2-如果是,如何取消所有存储的订阅?

bag.removeAll() is enough?

或者我应该遍历该集合并逐个取消所有订阅吗?

for sub in bag {
   sub.cancel()
}

Apple表示订阅一直有效,直到存储的AnyCancellable在内存中为止。所以我想用bag.removeAll()取消可取消对象就足够了,不是吗?

ios swift swiftui ios13 combine
2个回答
0
投票

[存储对自己的订户的引用以便以后清理时,通常希望引用取消订阅。 anyCancellable提供了一种类型擦除的引用,该引用将任何订阅者转换为AnyCancellable类型,从而允许在该引用上使用.cancel(),但不能访问订阅本身(例如,可以请求更多数据)。


0
投票

尝试创建管道,然后not

© www.soinside.com 2019 - 2024. All rights reserved.