玖叶教程网

前端编程开发入门

Swift lazy 懒加载(fragment懒加载原理)

应用场景

在使用变量的过程中:

  1. 当在使用该变量时再初始化加载
  2. 在设置懒加载的时候,可以通过 self 设置类的属性、方法或者函数等。比如在类的普通初始化中,当类的初始化完成前,是无法使用它的属性、方法或者函数

核心逻辑/代码

可以被称之为懒加载的几个情况:

  • 全局变量,默认为懒加载变量。在程序运行过程中,当用到这个变量时再进行加载。
  • static 修饰的属性,默认为懒加载属性。当 static 修饰的变量时,这个变量是通过类名或者结构体名调用,而不是使用对象调用。类似于全局变量。
  • 实例属性前 lazy 修饰时,也是懒加载属性变量,因为是在使用的时候再进行加载或者初始化设置属性变量,所以该实例属性不能用 let 修饰,需要用 var 修饰。

lazy 修饰的实例属性不是线程安全

采用 lazy var 形式的懒加载,无法保证线程安全。一旦某个线程对某一实例属性的懒加载过程未结束,而另一个线程同时又操作了该实例属性,那么会导致又一次加载属性,此时该属性便被初始化多次,已不再具有“懒”的特点了。— 《The Swift Programming Language》

示例代码


// 懒加载1:全局变量
var down1 = "ddd"

struct AA {
    // 懒加载2:类属性
    static let aa
    
    // 懒加载3:实例属性
    lazy var bb
}

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言