大佬教程收集整理的这篇文章主要介绍了ios – Swift Lazy和Optional属性,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
例如,如果有人正在构建从侧面进来的导航栏,我认为应该都在一个UIViewController中.用户可能永远不会打开菜单,但有时他们会打开.
var menu: NavigationBar? lazy var menu: NavigationBar = NavigationBar.initialize()
我认为这两个选项都是很好的代码,因为除非需要,否则它们不会创建视图.我理解可选意味着可能有一个值可能是零.我也理解懒惰意味着在我需要它之前不要担心它.
具体问题
我的问题是他们的表现模式(安全性和速度)表明选项更快更安全或反之亦然?
懒惰变量非常适合需要设置一次的东西,然后永远不会重新设置.它是一个变量,因此您可以将其更改为其他内容,但这种方法会破坏惰性变量的目的(即根据需要设置自己).
对于可能消失的东西(可能会再次出现),可选项更多.每次都需要设置它们.
因此,让我们看一下侧边菜单的两种情况:一种是在不可见的情况下留在周围的情况,另一种是在取消分配时.
lazy var sideMenu = SideMenu()
因此,第一次访问sideMenu属性时,将调用SideMenu()并将其分配给属性.即使你没有使用它,实例也会永远存在.
现在让我们看看另一种方法.
var _sideMenu: SideMenu? var sideMenu: SideMenu! { get { if let sm = _sideMenu { return sm } else { let sm = SideMenu() _sideMenu = sm return sm } } set(newvalue) { _sideMenu = newValue } }
(注意这只适用于类,而不适用于结构.)
好的,这是做什么的?它的行为与懒惰的var非常相似,但它让你重新设置为nil.因此,如果您尝试访问sideMenu,则可以保证获得一个实例(存储在_sideMenu中的实例或新实例).这是一个类似的模式,它懒惰地加载SideMenu(),但是这个可以创建许多SideMenu()实例,前面的例子只能创建一次.
现在,大多数视图控制器都足够小,你应该只使用之前的延迟.
因此,针对同一问题的两种不同方法.两者都有利有弊,在不同情况下工作更好或更差.
以上是大佬教程为你收集整理的ios – Swift Lazy和Optional属性全部内容,希望文章能够帮你解决ios – Swift Lazy和Optional属性所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。