Swift를 다루다 보면 변수를 설정할 때 var와 let을 자주 쓰게 되는데, 상황에 따라 lazy var와 private let이 필요할 때가 있어. 그럼 이 녀석들을 언제, 왜 써야 하는지 쉽게 풀어볼게. ଘ(੭ˊᵕˋ)੭* ੈ✩‧₊˚
1. lazy var: 필요할 때만 게으르게!
먼저 lazy var부터 살펴보자. 보통 var는 선언하자마자 값을 설정하지. 그런데, 만약 그 변수가 바로 필요하지 않고, 나중에 특정 상황에서만 사용된다면 어떨까? 바로 이럴 때 lazy var를 쓰는 거야.
"Simplicity is the soul of efficiency."
코드가 간결할 때 효율적일 수 있다는 점을 기억하기!
lazy var는 변수가 처음부터 초기화되지 않고, 실제로 그 변수에 접근할 때 값을 할당해.
그래서!? 메모리와 성능을 아낄 수 있어!
class DataFetcher {
lazy var data: [String] = {
print("데이터를 가져오는 중...")
return ["데이터1", "데이터2", "데이터3"]
}()
}
let fetcher = DataFetcher()
// 아직 data가 초기화되지 않았어
print("앱 실행 중...")
// 여기서 처음으로 data에 접근하니까, 그때서야 데이터를 가져와
print(fetcher.data)
위 코드에서 data는 처음부터 데이터를 가져오지 않아. data에 처음 접근하는 시점에만 데이터를 가져오게 돼. 그래서 필요한 시점에만 리소스를 쓰게 하는 거지.
2. private let: 보호하고 싶은 비밀이 있을 때!
이제 private let을 살펴보자. let은 한 번 설정하면 값을 바꿀 수 없는 상수야. 그런데 여기에 private를 더하면, 이 상수는 클래스나 구조체 내부에서만 접근 가능해져. 외부에서 수정하거나 건드릴 수 없게 보호할 수 있는 거지.
private let을 언제 쓰느냐? 중요한 데이터를 외부에서 절대 바꾸지 못하게 하거나, 외부에서 보지 못하도록 하고 싶을 때야.
class SecureConfiguration {
private let apiKey: String
init(apiKey: String) {
self.apiKey = apiKey
}
func getApiKey() -> String {
return self.apiKey
}
}
let config = SecureConfiguration(apiKey: "my-secret-key")
// 외부에서 apiKey에 접근하려고 하면 에러가 나
// print(config.apiKey) // 에러 발생
// 대신 내부 메소드를 통해서만 값을 가져올 수 있어
print("API Key: \(config.getApiKey())")
여기서 apiKey는 외부에서 접근이 차단된 중요한 정보야. private let 덕분에 외부에서 함부로 바꾸거나 접근할 수 없게 보호할 수 있어.
마지막으로 정리해 보자면,
- lazy var: 변수가 필요할 때까지 초기화를 미루고 싶을 때 사용. 예를 들어, 복잡한 계산이 필요할 때만 실행되도록 할 때.
- private let: 외부에서 접근할 수 없고, 변경할 수 없는 상수를 만들고 싶을 때 사용. 중요한 데이터를 보호해야 할 때.
→ lazy var는 "효율성"을 위한 기능이고, private let은 "보안"이나 "안전성"을 위한 기능
'iOS 앱 개발자 프로젝트 > Swift 문법 정복하기' 카테고리의 다른 글
[Swift] HOF == My HOPE (High-order function) (5) | 2024.05.02 |
---|---|
[Swift] String interpolation (0) | 2024.04.27 |
[Swift] 객체 지향 프로그래밍 (Object-Oriented Programming) (1) | 2024.04.10 |
[Swift] Inheritance & Override (2) (0) | 2024.04.10 |
[Swift] Closure, Higher Order Function (2) (0) | 2024.03.31 |