728x90
반응형
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 속성을 주어 생성할 수 있다
반응형
'Programming > Swift' 카테고리의 다른 글
[Swift] 문법다시보기 - 열거형 (0) | 2021.10.10 |
---|---|
[Swift] Computed Properties (연산 프로퍼티) (0) | 2019.07.28 |
[Swift] Enumeration (열거형) 살펴보기 (0) | 2019.07.10 |
[Swift] Properties 1 - Stored properties (저장 프로퍼티) (0) | 2019.07.09 |
[Swift] Swift Any, AnyObject 차이 알아보기 (0) | 2019.06.12 |