SwiftUI lazy 延时存储属性

12 min read

SwiftUI的lazy延迟存储属性是在需要时才会被计算和初始化的属性。它们通常被用来存储需要计算的临时结果,以减少重复计算的次数。

在SwiftUI中,可以使用@Lazy属性包装器来定义延迟存储属性。@Lazy属性包装器的实现基于Swift的属性包装器功能。

下面是一个示例,演示如何在SwiftUI中使用@Lazy属性包装器创建延迟存储属性:

import SwiftUI

struct ContentView: View {
    @Lazy var expensiveResult: Int = {
        // 在这里进行耗时的计算
        var result = 0
        for i in 1...1000000 {
            result += i
        }
        return result
    }()

    var body: some View {
        Text("Expensive Result: \(expensiveResult)")
    }
}

在上面的例子中,expensiveResult是一个使用@Lazy属性包装器的延迟存储属性。它的计算闭包将在第一次访问expensiveResult时执行,并将结果存储在expensiveResult中。以后的访问将直接返回存储的结果,而不会重新计算。

请注意,@Lazy属性包装器只能用在具有var关键字的属性上,并且只能在初始化时进行赋值。