Swift 懒加载(lazy)

作者: Bobby0322 | 来源:发表于2016-05-14 12:35 被阅读2703次

在做OC项目中经常使用的就是懒加载,重写getter方法, 什么时候用到getter方法什么时候去加载, 并且就加载一次,保证项目的效率

那么何为惰性初始化呢?
从OC的代码中不难看出,惰性初始化,就是在变量第一次使用的时候才进行初始化。

那么Swift也有懒加载这么一说,而且Apple 很推荐我们使用懒加载, 并且还有一个关键字lazy

懒加载定义: var 变量名: 类型 = 闭包()

看一下下面的实例

    private lazy var backBtn: UIButton          = UIButton()
    private lazy var likeBtn: UIButton          = UIButton()
    private lazy var sharedBtn: UIButton        = UIButton()
    private lazy var submitTitle: UILabel       = UILabel()
    private lazy var line:UIView                = UIView()
    private lazy var isLoadFinsih               = false
    private lazy var isAddBottomView            = false
    private lazy var showBlackImage             = false
    private lazy var detailVebView: UIWebView   = UIWebView(frame: CGRectMake(0,0,AppWidth,AppHeight))
    private lazy var tableFooterView            = UIView()
    private lazy var loadFinishScrollHeihgt: CGFloat = 0
    private lazy var customNav: UIView = {
        let customNav = UIView(frame: CGRectMake(0, 0, AppWidth, NavigationH))
        customNav.backgroundColor = UIColor.whiteColor()
        customNav.alpha = 0.0
        return customNav
    }()

Swift中的惰性初始化

Swift中,有两种方式来惰性初始化。
第一种,简单表达式

lazy var first = NSArray(objects: "1","2")

第二种,闭包

lazy var second:String = { return "second" }()

注意:不要忘记最后的小括号,只有加了小括号,必包才会在掉用的时候立刻执行。

惰性初始化的使用场景

  • 属性本身依赖于外部因素才能初始化
  • 属性需要复杂计算,消耗大量CPU
  • 属性不确定是否会使用到
  • 定制化的初始化
    有些初始化只需要初始化一次,在变量定义的地方初始化,有助于代码维护

相关文章

  • swift —— tips swift 中的懒加载实现

    objc objc 对象的懒加载 swift swift 的懒加载 方式 1lazy 保证数据在用到的时候才会被加...

  • Swift:)懒加载Lazy

    OC中,要实现懒加载是用到getter方法,例如 Swift懒加载差别就很大了,懒加载属性用lazy修饰,注意结尾...

  • Swift: lazy 属性的写法

    序言:OC中有懒加载,Swift中用lazy关键字声明属性,也可以实现懒加载。lazy所修饰的属性只有第一次访问时...

  • Swift总结4:UI控件 单例 代理 懒加载 网络请求 闭包

    //懒加载//swift中固定写法lazy var l:UILabel = { //viewDidLoad中vie...

  • swift学习09(懒加载)

    swift中是通过专门的关键字(lazy)来实现懒加载; 一、直接懒加载赋值 二、懒加载赋一个函数 三、懒加载赋一...

  • lazy

    swift中是通过专门的关键字(lazy)来实现懒加载; 直接懒加载赋值 懒加载赋一个函数 懒加载赋一个闭包 1、...

  • Swift 懒加载Lazy

    对于很多人非常熟悉OC中的懒加载,并且已经达到炉火纯青。 但是在Swift兴风作浪的年代,你好意思不掌握Swift...

  • Swift 懒加载(lazy)

    在做OC项目中经常使用的就是懒加载,重写getter方法, 什么时候用到getter方法什么时候去加载, 并且就加...

  • Swift lazy 懒加载

    应用场景 在使用变量过程中: 当在使用该变量时再初始化加载 在设置懒加载的时候,可以通过 self 设置类的属性、...

  • Swift 懒加载Lazy

    1.Lazy Variables 惰性变量是按需初始化的存储属性,只能在struct或class中使用惰性变量。例...

网友评论

    本文标题:Swift 懒加载(lazy)

    本文链接:https://www.haomeiwen.com/subject/jnimrttx.html