-
懒加载的2个好处:
- 延迟加载属性(UI类型控件一般都会延迟加载)
- 在后边的代码中,延迟加载的属性,不用再强制解包
-
懒加载的2种创建方式:
-
方法一:
直接声明属性:private lazy var btn: UIButton = UIButton() // 之后再添加大view之前进行相关属性设置即可,这样在使用的时候即可触发懒加载
-
方法二:
使用完整的闭包创建:private lazy var btn = { () -> (UIButton) in let btn = UIButton() return btn }()
在这种方式中,() -> (UIButton) in是尾随闭包,可以省略,省略以后,格式如下:
private lazy var btn = { let btn = UIButton() return btn }()
总结:建议使用方法一进行创建,原因如下:
方法二使用闭包方式,闭包中的智能提示不够完善
闭包中引用全局变量需要使用self.调用,需要注意
闭包中容易产生循环引用
-
-
注意:
- swift中的懒加载和oc中有一个地方是不同的,当oc中的懒加载对象置nil以后,重新使用self.调用,就会重新创建视图,但是swift中不会,所以swift中不能随意将懒加载对象置nil
-
同getter和setter的比较:
- 懒加载的属性是会保存的,懒加载的本质是闭包,当第一次加载过属性以后,闭包就不会再执行,所以懒加载创建的属性会分配存储空间并进行保存,而计算型属性不会保存,每次使用属性都会重新调用setter和getter
Swift懒加载
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 在程序设计中,我们经常会使用 懒加载 ,顾名思义,就是用到的时候再开辟空间,比如iOS开发中的最常用控件UITab...
- 因为有一个曾在WHU读书的姐姐,所以还没进校时就对埃塞克这个组织有所耳闻了。而真正加入这个大家庭,还是大二下初。...