博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift 懒加载 lazy
阅读量:6766 次
发布时间:2019-06-26

本文共 754 字,大约阅读时间需要 2 分钟。

hot3.png

 
  1. class CityInfo{
  2. init(){
  3. sleep(10)
  4. }
  5. }
  6. class Metro{
  7. var mName=""
  8. var city=CityInfo()
  9. }
  10. var line1=Metro()
  11. line1.mName="地铁一号线"
  12. println(line1.mName)
看这个例子 我们可以发现 CityIInfo这个类由于数据量过大或者类过于复杂等原因,在执行构造函数的初始化时使用了10秒的时间,于是我们在初始化地铁对象Metro时,由于要实例化CityInfo对象,所以也要等待10秒钟才能打印出打印结果。
但是我们可以看到,在这个实例中我们并没有使用city对象,所以这种加载速度对资源是一种浪费。
如何解决这个问题呢?
Swift提供了懒加载的方式供我们使用,顾名思义,懒加载就是只有使用到某个属性的时候才会对其进行加载,这样大大的减少了资源浪费。
关键字是:lazy
修改上例:
 
  1. class CityInfo{
  2. init(){
  3. sleep(10)
  4. }
  5. }
  6. class Metro{
  7. var mName=""
  8. lazy var city=CityInfo()
  9. }
  10. var line1=Metro()
  11. line1.mName="地铁一号线"
  12. println(line1.mName)
在Metro类的 city变量前加入lazy关键字,实现这个属性的懒加载
再次执行程序,会立刻打印出结果。
 
  1. var city = line1.city
  2. println("加载城市信息")
在这样写的时候,我们调用了city属性,这时才会真正的初始化CityInfo类,程序要过10秒后才会进行打印输出。

转载于:https://my.oschina.net/t5xgkow/blog/509983

你可能感兴趣的文章
用cxfreeze打包Python3.3成exe文件
查看>>
关于c语言内存地址对齐的一点思考
查看>>
备份中心和VRRP
查看>>
Unity3D游戏开发之《愤怒的小鸟》弹弓实现的技能培训
查看>>
浅析新手学seo的困惑及其应对方法
查看>>
重点掌握HTTP协议
查看>>
MongoDB安装
查看>>
软件公司 之 老马与新马
查看>>
怎么提加薪水的办法
查看>>
与域控制器失去信任关系问题排查
查看>>
golang 并发二(调度)
查看>>
家里人病了
查看>>
Scala的bounds
查看>>
Project Euler 8 Largest product in a series
查看>>
TinyXml 使用注意事项
查看>>
virtualbox-网络地址转换()NAT)模式下搭建个人局域网
查看>>
如何使用multipart/form-data格式上传文件
查看>>
django路由和模板
查看>>
nginx socket支持php
查看>>
/etc/skel/ 家目录模板
查看>>