Swift lazy 懒加载

作者: 我为双鱼狂 | 来源:发表于2021-06-18 17:00 被阅读0次

应用场景

在使用变量过程中:

  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
}

相关文章

  • swift —— tips swift 中的懒加载实现

    objc objc 对象的懒加载 swift swift 的懒加载 方式 1lazy 保证数据在用到的时候才会被加...

  • Swift:)懒加载Lazy

    OC中,要实现懒加载是用到getter方法,例如 Swift懒加载差别就很大了,懒加载属性用lazy修饰,注意结尾...

  • Swift: lazy 属性的写法

    序言:OC中有懒加载,Swift中用lazy关键字声明属性,也可以实现懒加载。lazy所修饰的属性只有第一次访问时...

  • Swift总结4:UI控件 单例 代理 懒加载 网络请求 闭包

    //懒加载//swift中固定写法lazy var l:UILabel = { //viewDidLoad中vie...

  • swift学习09(懒加载)

    swift中是通过专门的关键字(lazy)来实现懒加载; 一、直接懒加载赋值 二、懒加载赋一个函数 三、懒加载赋一...

  • lazy

    swift中是通过专门的关键字(lazy)来实现懒加载; 直接懒加载赋值 懒加载赋一个函数 懒加载赋一个闭包 1、...

  • Swift 懒加载Lazy

    对于很多人非常熟悉OC中的懒加载,并且已经达到炉火纯青。 但是在Swift兴风作浪的年代,你好意思不掌握Swift...

  • Swift 懒加载(lazy)

    在做OC项目中经常使用的就是懒加载,重写getter方法, 什么时候用到getter方法什么时候去加载, 并且就加...

  • Swift lazy 懒加载

    应用场景 在使用变量过程中: 当在使用该变量时再初始化加载 在设置懒加载的时候,可以通过 self 设置类的属性、...

  • Swift 懒加载Lazy

    1.Lazy Variables 惰性变量是按需初始化的存储属性,只能在struct或class中使用惰性变量。例...

网友评论

    本文标题:Swift lazy 懒加载

    本文链接:https://www.haomeiwen.com/subject/cuflyltx.html