Swift에서는 struct와 class라는 중요한 두가지 타입이 있는데
mutating 키워드 사용에 중요한 영향을 미친다!
mutating: 돌현변이, 변하게 만들다
뜻에서 부터 딱 감이 잡히지 않는가???
뭔가 안의 내용물을 바꿔준다는 느낌을 준다.
먼저 아래 코드를 살펴보자
class SimpleClass: ExampleProtocol {
var simpleDescription: String = "A very simple class."
var anotherProperty: Int = 69105
func adjust() {
simpleDescription += " Now 100% adjusted."
}
}
var a = SimpleClass()
a.adjust()
let aDescription = a.simpleDescription
struct SimpleStructure: ExampleProtocol {
var simpleDescription: String = "A simple structure"
mutating func adjust() {
simpleDescription += " (adjusted)"
}
}
var b = SimpleStructure()
b.adjust()
let bDescription = b.simpleDescription
값 타입과 참조 타입
대체 왜 Struct에서만 쓰이는거냐???
이건 class와 struct의 타입을 먼저 살펴봐야한다.
Swift에서 struct는 값 타입이고 class는 레퍼런스, 즉
참조 타입이다.
그렇기 때문에 struct의 메서드는 해당 struct의
속성, 즉 프로퍼티 값들을 변경할 수가 없다.
Mutating의 역할
즉 이 변경할 수 없는 값들을
바꿔주기 위해서 mutating을 써주는건데
마치 공장에서 똑같이 찍어내는
공산품들 중 몇가지 수정해서 찍어내고 싶을 때
mutating을 써준다고 생각하면 된다.
추가로 class에선 참조 타입이기 때문에
mutating이 필요가 없는거지
주의사항!
하지만 class는 참조가 전달되기 때문에
속성 값을 변경하면 참조가 가리키는
객체가 변경되기 때문에 주의해야한다 !!
'Swift' 카테고리의 다른 글
Swift) Error Handling(오류 처리)를 알아보자 (1) | 2024.01.31 |
---|---|
Swift) Enum: RawValue와 Optional 값 처리 (0) | 2024.01.30 |
XCode) 커스텀 단축키: 커서 바로 밑, 위에 라인 추가하기 (2) | 2024.01.21 |