当前位置: 首页 > 面试题库 >

Swift中惰性var的优点是什么

林丁雷
2023-03-14
问题内容

初始化的优点或区别是什么?

lazy var hintView: HintView = {
        let hintView = HintView()
        return hintView
}()

而不是简单地使用:

var hintView = HintView()

HintView是:class HintView: UIView {}

非常感谢您的帮助。


问题答案:

惰性存储属性vs存储属性

具有惰性属性而不是存储属性有一些优点。

  1. 仅当您读取该属性时,才执行与lazy属性关联的闭包。因此,如果出于某种原因未使用属性(可能是由于用户的某些决定),则可以避免不必要的分配和计算。
  2. 您可以使用存储属性的值填充惰性属性。
  3. 您可以self在内部使用惰性属性关闭


 类似资料:
  • 问题内容: 也许这个问题需要一些上下文。 我一直在使用Core Data在持久层上进行工作,发现Core Data不是线程安全的,因此仅需要限制在每个线程中。 因此,我的方法是创建自定义后台线程,以执行获取,保存等操作,同时还要创建主线程,该线程将用于从获取的线程中获取并将其传递给调用者方法。 默认情况下,Xcode的生成与核心数据模板的代码中使用的所有,等等。 所以我的问题是是否 使用实例化方法

  • 问题内容: 您将如何在Swift中实现以下模式? 所述类被初始化,其中包含的词典JSON数组。这些字典用于初始化类。但是,当访问或属性时,对象的初始化会延迟进行。 问题答案: 看来这个问题已经得到了很大的回答,但是回过头来看原始帖子,这是(IMHO)Swift中相对简洁的翻译。关键是您可以链接惰性属性。请注意,我同时使用了类函数和闭包- 两者都很好。

  • 问题内容: 我只是注意到Swift的成员是隐式的。 例如,这只会调用一次: 这背后的原理是什么? 如果我想要相反的行为怎么办? 问题答案: 该属性定义了一个“类型属性”,该属性仅被实例化一次。正如您所注意到的,这是懒惰发生的,因为静态行为就像全局变量一样。正如Swift编程语言:属性所说: 全局常量和变量总是以与惰性存储属性类似的方式延迟计算。与惰性存储的属性不同,全局常量和变量不需要用修饰符标记

  • 问题内容: 在Angular中使用“ Controller as”语法有什么好处?只是为控制器创建别名还是在幕后有其他技术原因? 我是Angular的新手,想进一步了解这种语法。 问题答案: -syntax具有多个优点: 克拉蒂 考虑以下示例: 仅通过阅读这段代码,您就无法分辨出哪里来的。它是否属于,或仅仅是上面的sone输入的随机浮动范围变量? 通过使用它很清楚: 您可以立即看到这是的属性。这使

  • 从评论来看: 有人能解释一下它是如何有效的吗?仅仅是它避免拳击的事实就足够了吗?