阅读 66

Swift lazy 懒加载

应用场景

在使用变量过程中:

  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
}

作者:我为双鱼狂

原文链接:https://www.jianshu.com/p/0f81482f9831

文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐