美文网首页Swift
【Swift语言】Lazy Initializtion延时初始化

【Swift语言】Lazy Initializtion延时初始化

作者: Magenta_she | 来源:发表于2016-08-30 15:06 被阅读73次

Lazy Initialization,简单来说,就是在需要用到这个属性时,再对它进行初始化,以达到优化性能的作用。

Objective-C中的延时初始化

//ClassA.h
@property (nonatomic, strong) NSMutableArray *players;
//ClassA.m
-(NSMutableArray *)players {
     if(!_players) {
        _players = [[NSMutableArray alloc] init];
   }
     return _players;
}

初始化ClassA后,_players是nil,只有当访问players属性时,getter方法才会被调用,并进行初始化。可见,属性初始化在对象初始化之后。

Swift中的延时初始化

  • 使用场景一:对象初始化前,属性的初始值未知。比如在这个例子中,personalizedString包含name,所以只有在初始化对象后才能获得name。
class Person {
     var name:String
     lazy var personalizedString: String = {
         [unowned self] in
         return "Hello,\(self.name)!"
   }()
      init(name: String) {
           self.name = name
  }
}
//初始化Person时,personalizedString还没有被创建
let person = Person(name:“Magenta”)
//当使用personalizedString时,它被创建出来,并且包含了name
print(person.personalizedString)
//输出“Hello,Magenta!"

  • 使用场景二: 某个属性的值需要密集的计算
class MathHelper {
        lazy var pi : Double = {
        //计算pi的值
        return resultsOfCalculation
   }()
}

参考博客:
LAZY 修饰符和 LAZY 方法
Lazy Initialization with Swift

相关文章

  • 【Swift语言】Lazy Initializtion延时初始化

    Lazy Initialization,简单来说,就是在需要用到这个属性时,再对它进行初始化,以达到优化性能的作用...

  • Lecture2 MVC

    Notes 1.lazy 延时初始化: 初始化该对象时需要用到其他还未初始化的对象,可以使用lazy懒加载,等到需...

  • lazy 修饰符和 lazy 方法

    延时加载或者说延时初始化时很常用的优化方法。 在特定环境下才会使用到的存储属性,可以使用 lazy class C...

  • swift懒初始化(lazy)

    延时加载或者说延时初始化是很常用的优化方法,在构建和生成新的对象的时候,内存分配会在运行时耗费不少时间,如果有一些...

  • 构造方法总结一

    作用:对实例对象的内容进行初始化Swift要求类或者结构体中的存储属性(非lazy的)在对象构造完毕后要有初始化值...

  • Swift和Dart (二)

    这篇文章 主要是比较两种语言的初始化 swift 中的初始化 Swift 的初始化和 Objective-C 有一...

  • Java单例模式的正确写法

    无锁lazy初始化

  • swift3.0- 构造函数

    构造函数的介绍 作用: 对实例对象的内容进行初始化Swift要求类或者结构体中的存储属性(非lazy的)在对象构造...

  • 构造方法

    构造方法: 作用:对实例对象的内容进行初始化Swift要求类或者结构体中的存储属性(非lazy的)在对象构造完毕后...

  • Swift构造方法

    构造方法作用:对实例对象的内容进行初始化Swift要求类或者结构体中的存储属性(非lazy属性)在对象构造完毕后要...

网友评论

    本文标题:【Swift语言】Lazy Initializtion延时初始化

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