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