ios - Swift - 为什么不能轻松地将惰性属性设置为只读

标签 ios swift lazy-loading readonly

任何人都可以解释一下 iOS 9 Swift 基础知识书中 neuburg 的有关惰性属性的评论吗?

“语言中存在一些小漏洞:惰性实例属性不能有setter观察者,并且没有惰性let(因此您不能轻易地将惰性实例属性设置为只读)”......特别是关于无惰性让只读的阻止能力

最佳答案

来自苹果documentation:

You must always declare a lazy property as a variable (with the var keyword), because its initial value might not be retrieved until after instance initialization completes. Constant properties must always have a value before initialization completes, and therefore cannot be declared as lazy.

但是,如果您想从类/结构中获取一个惰性值,并且希望确保没有人可以写回该值,那么只需使用带有返回值的 func 即可。或者像米洛斯所说 - 一个惰性属性(property)上的私有(private)(集)。 (这不是一回事)所以某种程度上一切皆有可能。 :)

关于ios - Swift - 为什么不能轻松地将惰性属性设置为只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36338339/

相关文章:

android - 当移动设备移动时,推送通知是否比套接字更好

ios - 没有自动换行的多行 UILabel?

ios - 任何对象 Swift 3 的排序数组

swift - 在 Swift 中全局设置 NavigationItem titleView Image

ios - NavigationBar 按钮单击区域无法正常工作(图像不可单击)

swift - 比较没有日期的时间 ​​swift3

asp.net-core - 在导航属性上使用虚拟

javascript - 延迟加载背景图像/淡入替换背景图像

ios - 以编程方式添加时渐变 View 不起作用

c# - 我的 Fluent nHibernate 应用程序不是延迟加载