지연 저장 프로퍼티(Lazy Stored Properties)
Swift에서 인스턴스를 생성할 때 프로퍼티에 값이 필요 없다면 프로퍼티를 옵셔널로 선언해줄 수 있습니다. 그런데 그것과는 조금 다른 용도로 필요할 때 값이 할당되는 지연 저장 프로퍼티(Lazy Stored Properties)가 있습니다. 또한 지연 저장 프로퍼티는 호출이 있어야 값을 초기화를 하게 되고 lazy라는 키워드를 써서 사용합니다.
지연 저장 프로퍼티는 초기 값이 필요할 때 계산되지 않고, 처음으로 접근될 때만 계산이 됩니다. 지연 저장 프로퍼티는 주로 복잡한 클래스나 구조체를 구현할 때 많이 사용합니다. 지연 저장 프로퍼티를 사용한다면 리소스를 절약하고 성능을 향상시킬 수 있다는 장점이 있습니다. 지연 저장 프로퍼티를 사용하는 방법은 아래와 같습니다.
사용 방법
lazy var propertyName: PropertyType = {
// 초기화 코드
// propertyName에 할당될 초기 값 반환
return initialValue
}()
위의 코드에서 propertyName은 지연 저장 프로퍼티의 이름이며, PropertyType은 해당 프로퍼티의 타입을 나타냅니다. 초기화 코드 부분은 지연 저장 프로퍼티가 처음으로 접근될 때 실행되며, 그 결과가 propertyName에 할당됩니다.
지연 저장 프로퍼티의 예제 코드를 살펴보도록 하겠습니다.
예제 코드
class ImageProcessor {
lazy var image: UIImage = {
print("Image loading...")
let loadedImage = loadImageFromDisk()
return loadedImage
}()
func processImage() {
let processedImage = applyFilters(to: image)
display(image: processedImage)
}
private func loadImageFromDisk() -> UIImage {
// 디스크에서 이미지 로드하는 로직
return UIImage(named: "image.jpg")!
}
private func applyFilters(to image: UIImage) -> UIImage {
// 이미지에 필터 적용하는 로직
return filteredImage
}
private func display(image: UIImage) {
// 이미지를 화면에 출력하는 로직
}
}
위의 예제에서 image는 지연 저장 프로퍼티입니다. 처음으로 image에 접근할 때(processImage() 메서드 내부), 초기화 코드 블록이 실행되어 "Image loading..."이 출력되고, 디스크에서 이미지를 로드하여 반환합니다. 그 후부터는 이미지가 메모리에 캐시되어 재사용됩니다.
이처럼 지연 저장 프로파일르 사용하면 필요한 시점까지 값을 계산하지 않고도 리소스를 절약할 수 있으며, 복잡한 초기화 작업을 수월하게 처리할 수 있습니다.
감사합니다.
틀린 부분이 있거나 더 좋은 내용 훈수 환영합니다!
공감과 댓글 부탁드립니다.
'Apple > Swift' 카테고리의 다른 글
[Swift] Raw Values (원시 값) (0) | 2023.10.10 |
---|---|
[Swift] 델리게이트 패턴(Delegate Pattern) (2) | 2023.10.08 |
[Swift] 함수에 대한 개념과 다양한 예시 소스 (0) | 2023.09.29 |
[Swift] 제어문과 다양한 예제 정리 (0) | 2023.09.26 |
[Swift] 업캐스팅과 다운캐스팅, Swift와 Kotlin 옵셔널의 차이 (0) | 2023.09.25 |