6

我有一个非常简单的 SwiftUI 视图,其中列出了一堆文本:

extension String: Identifiable {
  public var id: String { return self }
}

struct ContentView: View {
  var items: [String] = (0..<1000).map { $0.description }
  var body: some View {
    List(items) { str in
      HStack {
        Text(str)
      }
    }
  }
}

这段代码似乎工作正常,并为我提供了流畅的滚动性能。

如果我更改它以使 HStack 位于水平滚动的 ScrollView 内:

var body: some View {
  List(items) { str in
    ScrollView(.horizontal) {
      HStack {
        Text(str)
      }
    }
  }
}

当我在列表中上下滚动时,性能受到了巨大的影响,内存似乎无限增长。内存调试器中没有任何泄漏。

我想知道是否有人知道为什么性能影响如此之大,以及是否有任何解决方法。

更新:

HStack 和 Text 似乎与问题无关,即使是 scrollView 内的 Spacer 也会触发问题。

List(items) { _ in
  ScrollView(.horizontal) {
    Spacer()
  }
}
4

1 回答 1

2

似乎至少 List、ScrollView、Form 和 NavigationView 可能存在内存泄漏问题(请参阅此问题)。该问题的作者向 Apple (FB7318839) 提交了反馈。我也鼓励你这样做,希望这只是一个很快就会得到修复的错误。

于 2019-09-25T14:10:47.143 回答