iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – Swift Lazy和Optional属性大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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,请注明来意。