您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

计算属性和带闭包的属性集之间的区别

计算属性和带闭包的属性集之间的区别

一个是通过闭包初始化的存储属性。第二个是计算属性

存储的属性的初始化关闭调用一次,只有一次,但你可以改变存储的属性值(除非您更换varlet)。当您希望封装代码以在单个简洁的代码块中初始化存储的属性时,此功能很有用。

但是,每次引用变量时都会调用计算属性的块。当您希望每次引用计算属性时都调用代码时,这很有用。通常,当每次引用存储的属性时都需要重新计算计算的属性时(例如,从其他可能是私有的存储属性重新计算),您可以执行此操作。

在这种情况下,您无疑需要存储的属性(第一个示例),而不是计算的属性(第二个示例)。您大概每次引用该变量时都不需要新的推送行为对象。

顺便说一下,在第一个示例中,您内部引用了它的实例化。如果您想要这种行为,则必须使用lazy关键字:

lazy var pushBehavior: UIPushBehavior = {
    let lazilyCreatedPush = UIPushBehavior()
    lazilyCreatedPush.setAngle(50, magnitude: 50)
    return lazilyCreatedPush
}()

但是,如果属性static,则将自动延迟实例化。

其他 2022/1/1 18:13:33 有637人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶