matchedGeometryEffect 对 ScrollView 内存泄漏

matchedGeometryEffect on ScrollView memory leaks

我正在使用 LazyVGrid 来显示文章库。 一切正常,我没有内存警告,因为每次视图离开屏幕时,内存使用量都会减少。

我的问题是当我对图像使用 matchedGeometryEffect 以便将动画与新视图同步时。

动画效果完美,但滚动视图滚动时内存增加。 就像 matchedGeometryEffect 正在维护对对象的内存引用,并且不允许释放。

容器

LazyVGrid(
    columns: [
     GridItem(.flexible())
    ],spacing: 16
 ){
                    
   ForEach(viewModel.articles){ article in
        LazyVStack{
            ArticleCardView(article: article, animation: animation, show: $show)
            .onTapGesture {
                withAnimation(.spring()){
                   selectedArticle = article
                   show.toggle()
                }
            }
        }

    }
 }

卡片视图

VStack{
        if !show {
            Image(uiImage: readImage(name: "\(article.id)00"))
                .resizable()
                .aspectRatio(contentMode: .fit)
                //.matchedGeometryEffect(id: "img\(article.id)00", in: animation)

...

新观点

VStack{
    GeometryReader { geo in
       TabView {
           Image(uiImage: readImage(name: "\(article!.id)00"))
               .resizable()
               .aspectRatio(contentMode: .fit)
               //.matchedGeometryEffect(id: "img\(article!.id)00", in: animation, isSource: false)
               .tag(1)

...

一切正常,但如果我取消注释注释行,滚动时内存使用量会增加。

有什么想法吗? 比你

已解决:我只是将视图嵌入到 VStack 中并释放了内存:

...
ForEach(viewModel.articles){ article in
     VStack{
        ArticleCardView(article: article, animation: animation, show: $show)...