Swift

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

2016-08-30  本文已影响73人  Magenta_she

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中的延时初始化

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

上一篇下一篇

猜你喜欢

热点阅读