swift干货iOSSwift

Swift懒加载

2015-08-06  本文已影响12845人  iOS开发章鱼哥

Swift 懒加载小议

    lazy var zyTableView: UITableView = {
    
    let tempTableView = UITableView (frame: self.view.bounds, style: UITableViewStyle.Plain)
    tempTableView.delegate = self
    tempTableView.dataSource = self
    return tempTableView
}()



这是Swift中懒加载一个叫做zyTableView的变量。
我们今天就主要来说说这段代码.

先来说一下懒加载的好处:

再来说一下有争议的地方,我刚才在几个群里问懒加载效率低不低,有不同意见,有人说低,也有人说不低,我觉得懒加载效率是低的,最简单的说法:

在你需要使用肥皂的时候,你没有肥皂,然后去捡一个肥皂,和你需要使用肥皂的时候就有肥皂了,你觉得哪个效率高?懒加载就是现去捡肥皂呀,所以,懒夹在效率低。

再来看看Swift中懒加载的本质,引用绝影的原话:

它本质在siwft中确实是一个闭包,执行顺序是这样的,如果这个lazy修饰的变量没值,就会执行闭包中的东西,不是每次都执行(本人补充:这也就是为什么在Swift中的懒加载没有oc中判断。if(xx==nil){初始化xx}的代码段)。

在来看下一个问题,既然懒加载在Swift中是一个闭包,那么就用闭包来复写一个懒夹在咯:

let name = { () -> String in
   
   return "章鱼哥"
   
}

lazy var myName:String = self.name()

最后呢,如果懒夹在初始化失败怎么办?
答案:可能值咯。

lazy var value1:String = {
    return "aaa"
}()

lazy var value2:String? = {
    
    return nil
}()

lazy var value1:String  等价于 lazy var value1:String!

就这样,哪里说的不对,留个言,我立马改。

重要的话说好几遍:

本文宇宙超级无敌感谢绝影。

本文宇宙超级无敌感谢绝影。

本文宇宙超级无敌感谢绝影。

本文宇宙超级无敌感谢绝影。

本文宇宙超级无敌感谢绝影。

本文宇宙超级无敌感谢绝影。

上一篇下一篇

猜你喜欢

热点阅读