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
}

results matching ""

    No results matching ""