티스토리 뷰

Block/iOS(Swift)

[Swift] Lazy Stored Properties

나는 devssun 2019. 7. 28. 18:54

Lazy Stored Properties 공식문서

lazy stored property는 문자 그대로 게으른 저장 프로퍼티이다
왜 게으를까?
lazy로 선언한 객체는 사용될 때까지 계산되지 않는다

swift 공식 문서 코드는 아래와 같이 되어 있다

class DataImporter {
    /*
    DataImporter is a class to import data from an external file.
    The class is assumed to take a nontrivial amount of time to initialize.
    */
    var filename = "data.txt"
    // the DataImporter class would provide data importing functionality here
}

class DataManager {
    lazy var importer = DataImporter()
    var data = [String]()
    // the DataManager class would provide data management functionality here
}

let manager = DataManager()
manager.data.append("Some data")
manager.data.append("Some more data")
// the DataImporter instance for the importer property has not yet been created

DataManager 클래스는 문자열 데이터를 관리하고 접근할 수 있게 한다
DataImporter 클래스는 외부 파일에서 데이터를 가져오는 기능을 갖는다 DataManager 클래스에서 DataImporter 의 인스턴스가 lazy로 선언되어 있는데 그 이유는 DataManager 인스턴스에서 외부 파일에 접근하지 않아도 데이터를 추가하고 관리할 수 있다
외부 파일의 데이터를 가져올 필요가 있을 때 인스턴스를 사용하면서 DataImporter의 클래스가 초기화된다

print(manager.importer.filename)
// the DataImporter instance for the importer property has now been created
// Prints "data.txt"

filename을 출력하기 위해 사용할 때 importer 프로퍼티가 생성된다

위 예제처럼 당장 사용할 이유가 없는 프로퍼티를 생성할 때 lazy 속성을 주어 생성할 수 있다

도움이 되셨다면.. Buy me a coffeeBuy me a coffee