LazyVGrid,列表,LazyStacks不会从内存中释放视图吗?

时间:2020-07-18 15:54:22

标签: swift swiftui lazyvgrid phpicker

我正在使用SwiftUI 2中的新照片选择器,我制作了一个简单的应用程序以在LazyVGrid中显示导入的图像,但是当向下滚动时,如果我导入了约150张图像,则该应用程序会完成所有内存并崩溃(由于内存问题而终止。)

我对LazyVStack和List尝试了相同的操作,但是它们有相同的问题,我期望延迟项从内存中释放出屏幕之外的所有单元,但看起来不起作用。

这是错误还是我做错了什么?

这是我的代码:

auto stringListSplitter(const QString& str)
{
    QStringList elements = str.split(':');
    return std::make_pair(elements[0], elements[1]);
} 

还有PhotoPickerView:

    QString line = "id: John";
    auto pair = stringListSplitter(line);

    QString title = pair.first;
    QString name = pair.second;

1 个答案:

答案 0 :(得分:0)

视图本身几乎不消耗任何东西,并且惰性事物可以正常工作...加载和存储的图像占用了所有内存

struct Media: Identifiable {
    var id = UUID()
    var image: Image      // << here !!
}

struct ContentView: View {
    // .. other code     

    @State var medias: [Media] = [] // << here !!