Swift 面试题
目录

Swift 中什么是延迟存储属性 (Lazy Stored Property)?

· 约 3 分钟读完 · 第 77 / 196 章

推荐答案

在 Swift 中,延迟存储属性(Lazy Stored Property)是一种特殊的存储属性,它的初始值在首次访问时才会被计算和存储。延迟存储属性通过 lazy 关键字来声明,适用于那些初始化成本较高或依赖于外部条件的属性。

本题详细解读

1. 延迟存储属性的定义

延迟存储属性是指那些在首次访问时才会被初始化的属性。它们通过 lazy 关键字来声明,并且必须是一个变量(var),因为它们的值可能在实例初始化之后才会被设置。

2. 延迟存储属性的使用场景

延迟存储属性通常用于以下场景:

  • 初始化成本较高:某些属性的初始化可能需要大量的计算资源或时间,延迟初始化可以避免不必要的开销。
  • 依赖外部条件:某些属性可能依赖于实例的其他部分或外部条件,延迟初始化可以确保在正确的时机进行初始化。

3. 延迟存储属性的注意事项

  • 线程安全:延迟存储属性在 Swift 中不是线程安全的。如果在多线程环境下访问延迟存储属性,可能会导致多次初始化。
  • 不可用于常量:延迟存储属性必须是变量(var),因为它们的值在实例初始化之后才会被设置。

4. 示例代码解析

在示例代码中,DataManager 类有一个延迟存储属性 importer,它的类型是 DataImporter。DataImporter 的初始化可能会比较耗时,因此将其声明为延迟存储属性可以避免在 DataManager 实例化时立即初始化 importer。

在这个例子中,importer 属性在 manager 实例化时并没有被初始化,只有在首次访问 manager.importer.filename 时才会被初始化。