우리 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
'iOS > Common' 카테고리의 다른 글
[Swift] 고차함수(map, filter, reduce)를 스윽 핥아봅시다 (0) | 2022.06.08 |
---|---|
[Swift] final 왜 막 갖다 붙이나요? (feat. vtable, dynamic dispatch) (0) | 2022.06.06 |
[Code Snippet] private lazy var 쓰다가 팔 부러질 것 같을 때 보는 글 (0) | 2022.04.29 |
키체인(Keychain)에 대한 설명과 간단한 사용법 (0) | 2022.04.20 |
Test Driven Development는 무엇이며, 왜 하는가? (0) | 2022.04.14 |