Lazy Init 延遲初始
http://mikebuss.com/2014/06/22/lazy-initialization-swift/
過去在 objective-c 在初始變數,可以如下面這樣,當變數被呼叫的時候再進行初始化,這種也是我們常用的 Get/Set 變數中的 Get。
@property (nonatomic, strong) NSMutableArray *players;
- (NSMutableArray *)players {
if (!_players) {
_players = [[NSMutableArray alloc] init];
}
return _players;
}
而在 swift 有著不一樣的做法就是func前面加上一個 lazy
lazy var players = [String]()
或初進一步設定
lazy var players: [String] = {
var temporaryPlayers = [String]()
temporaryPlayers.append("John Doe")
return temporaryPlayers
}()
或是指定一個 instance method
lazy var players: [String] = self.initialPlayers()
func initialPlayers() -> [String] {
var players = ["John Doe"]
return players
}