本文主要是介绍Swift 异步序列 AsyncStream 新“玩法”以及内存泄漏、死循环那些事儿(下),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
概览
在上一篇博文
- Swift 异步序列 AsyncStream 新“玩法”以及内存泄漏、死循环那些事儿(上)
我们讨论了 Swift 语言利用 AsyncStream 创建异步序列并获取其中连续体(Continuation)对象的新方法。而在这里我们将承接之前的话题继续来聊聊异步序列实际使用中可能遇到的各种陷阱,并介绍如何彻底摆脱它们。
在本篇博文中,您将学到如下内容:
- 概览
- 3. 一个潜在的内存泄漏点
- 4. 驯服“桀骜不驯”的死循环
- 总结
相信本篇会为 Swift 5.5 新并发模型中异步序列(Async Sequence)的使用实战让大家如虎添翼。
废话不再,让我们马上开始吧!Let’s go!!!😉
3. 一个潜在的内存泄漏点
我们继续上篇博文的未完成之旅。
在这之前,我们已经可以熟练运用 AsyncStream 来创建各色异步序列了,不过这并不代表我们已然“滴水不漏”。在真实的使用场景中,稍不留神可能就会千疮百孔、遍体鳞伤。
不信?“栗子”来了!
首先,我们利用 AsyncStream 新建一个 NumberProvider 数字发生器:
class NumberProvider {let numbers: AsyncStream<Int>private let continuation: AsyncStream<Int>.Continuationprivate var cancellable: AnyCancellable?init() {let result = AsyncStream.makeStream(of: Int.self)numbers = result.streamcontinuation = result.continuation}deinit {print("NumberProvider:我 GG 了!")}func start() {cancellable = Timer.publish(every: 1.0, on: .main, in: .common).autoconnect()
这篇关于Swift 异步序列 AsyncStream 新“玩法”以及内存泄漏、死循环那些事儿(下)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!