iOS/Common

[Swift] lazy 왜 쓰나요?

TDCIAN 2022. 5. 13. 23:17

lazy에 어울리는 이미지를 뭘 써야 할지를 모르겠네요...

 

우리 iOS 개발할 때 이런식으로 lazy 많이 쓰지요?

private lazy var sampleLabel: UILable = {
	let label = UILabel()
    label.text = "lazy 왜 쓰나요?"
    label.textColor = UIColor.systemBlue
    return label
}()

 

그런데 lazy를 왜 쓰는지 알고 계신가요?

 

ㅎㅎㅋㅋ... 알쥐알쥐...

 

lazy 키워드를 사용하는 프로퍼티를 지연 저장 프로퍼티(Lazy Stroed Property)라고 합니다.

지연 저장 프로퍼티는 호출이 있어야만 값을 초기화 하는 특성을 가지고 있습니다.

 

좀 더 자세히 설명해 봅시다.

 

우리가 인스턴스를 초기화 하는 과정에서 

언제나 모든 저장 프로퍼티가 동시에 초기화 될 필요가 없는 상황이 분명히 있겠지요?

 

그럴 때 지연 저장 프로퍼티 즉, lazy를 사용해 주시면 호출이 있을 때만 값을 초기화 하기 때문에

불필요한 성능저하나 공간 낭비를 줄일 수 있습니다!

 

다만 요런 것을 알고 계시면 좋겠네요!

 

다중 스레드 환경에서 지연 저장 프로퍼티에 동시다발적으로 접근할 때는 한 번만 초기화된다는 보장이 없습니다.

생성되지 않은 지연 저장 프로퍼티에 많은 스레드가 비슷한 시점에 접근한다면, 여러 번 초기화될 수 있습니다.

 

 

출처: 야곰님의 스위프트 프로그래밍: Swift 5

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791162242223&orderClick=LEa&Kc= 

 

스위프트 프로그래밍: Swift 5 - 교보문고

객체지향, 함수형, 프로토콜 지향 패러다임까지 한 번에! | 스위프트를 제대로 이해하고 싶은 개발자를 위한 책스위프트는 iOS와 macOS용 애플리케이션 개발에 주로 사용하는 프로그래밍 언어입니

www.kyobobook.co.kr