九: 懒加载
懒加载是一个在项目中特别常用的东西,在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