欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Swift 4.0学习之:懒加载

程序员文章站 2024-02-20 14:55:46
...

九: 懒加载

懒加载是一个在项目中特别常用的东西,在OC中,一般是通过重写getter方法来实现,但是在Swift里,多了一个叫 lazy 的修饰符,多么形象生动的命名。具体应用举例如下:
//在Swift中只需要通过 “lazy” + “=” + “闭包” 就可以实现懒加载
lazy var dataList:[Any] = {
//而且看这里,如果闭包是用来做懒加载的话,那么()-> () in return 全都可以省略
        ["zyt", 1, (4 , 5), ("name","zyt"), ["age":"25"]]
    }()

要注意的一点是:添加到父视图的操作,千万不要写到懒加载里面,会出问题的!

知识点:

//在声明控件的时候,直接用let修饰,看起来好像也行,如下
let label: UILabel = {
    let label = UILabel.init()
    label.text = "测试"
    label.frame = CGRect.init(x: 0, y: 0, width: 100, height: 100)
    return label
}()
//像上面这么写,运行之后,看起来好像也没问题,但是如果是需要跟用户交互的话,比方说需要点击事件,那么像上面这样写就不行了
let btn: UIButton = {
    let btn = UIButton.init(type: .custom)
    btn.frame = CGRect.init(x: 0, y: 150, width: 100, height: 100)
    //如果是let修饰的话,当走到这里时,self还是nil。所以这样创建的按钮是不会响应点击事件的
    btn.addTarget(self, action: #selector(switchTypeAction), for: .touchUpInside)
    return btn
}
//因此如果创建的控件需要跟用户交互的话,必须使用懒加载  lazy var