var, let 은 Swift 든 어떤 프로그래밍 언어에서든 제일 처음 배우게 된다.
변수, 상수
let은 값이 절대 바뀌지 않고
var은 값이 바뀔 수 있다.
View 에서 다른 View 로 전달을 받을 때, 어떤 View에서는 let으로 받고, 또 어떤 View에서는 var 로 받는다.
어떤 기준으로 선택해야할까?
일단 구체적으로
해당 받은 화면에서 값이 바뀌지 않을 경우에는 let을 1순위로 선택해야한다.
struct MySampleView: View {
let title: String
var body: some View {
Text(title)
}
}
View는 struct이기 때문에, 변경이 일어나면 새로 그리는 방식이므로 값이 내부에서 바뀔 경우에는 var를 선언해야한다.
struct MySampleView: View {
var count: Int
var body: some View {
Text("Count: \(count)")
}
}
또한 @State, @Binding, @ObservedObject, @EnvironmentObject 등의 속성은 값이 바뀌면서 뷰를 다시 그리겠다는 속성이기 때문에 반드시! var로 선언해야한다.
struct MySampleView: View {
@State private var count = 0
var body: some View {
Button("Increase: \(count)") {
count += 1
}
}
}
나는 이 질문을 받았을 때 머리에 있는 것들을 말로 설명하지를 못했다.🥲
여기서 private let, private var, public let, public var 에 대해 말을 하려니 말문이 턱 막혔다.
private let
뷰 내부에서만 사용하는 읽기 전용 상수라는 의미이다.
외부에서는 보거나 접근할 수 없고, 내부에서 계산용이나 상수로 쓸 때 사용한다.
struct MathView: View {
private let multiplier = 5
var body: some View {
Text("Result: \(multiplier * 10)")
}
}
private var
뷰 내부에서만 사용하는 읽고 쓸 수 있는 변수이다.
뷰 내부 상태를 추적하거나 조작할 때 사용하며, SwiftUI에서는 @State와 자주 같이 사용된다.
struct ToggleView: View {
@State private var isOn = false
var body: some View {
Toggle("Switch", isOn: $isOn)
}
}
public let
다른 모듈이나 파일에서 읽기만 가능하겠다는 의미이다.
외부에 값을 노출하되, 변경은 못 하게 하고 싶을 때 사용하면 된다.
public struct Book {
public let title: String
//외부에서 book.title을 읽을 수는 있지만, 바꿀 수는 없다
}
public var
외부에서 읽기와 쓰기 모두 가능하다.
기능적으로 꼭 필요한 경우가 아니면 신중하게 사용해야 하는 속성이다.
예기치 않은 외부 변경을 방지하기 위해 지양되는 경우가 많다.
public struct Counter {
public var count: Int
// 외부에서 Counter.count 값을 변경시켜버릴 수 있다. 주의해야함.
}
원하는 접근 범위(외부에 공개 여부)와 값의 변경 가능성(읽기/수정 여부)을 조합해서 결정하면 된다.
이게 뭐라고 설명을 못했을까...?😞
'iOS > Swift' 카테고리의 다른 글
SwiftData 모델에 있는 데이터가 빈 값일 수도 있고 아닐 수도 있을 때, 어떻게 처리해야하지? (0) | 2025.04.19 |
---|---|
SwiftData 에서 여러개의 모델을 가져올 때 어떻게 해야할까? (1) | 2025.04.18 |
Swift 함수와 Clousure 의 예제코드 (0) | 2025.03.26 |
Swift 에서의 프로퍼티(Property) (0) | 2025.03.21 |
Swift 에서의 Generics(제너릭) (0) | 2025.03.20 |