[Swift] Cannot assign to property: 'self' is immutable
Cannot assign to property: 'self' is immutable 문제 원인과 해결
위 문제는 구조체(Struct)안의 property를 함수를 통해서 변경하려고 할 때, 발견할 수 있다.
기본적으로 구조체는 스냅샷(snap shot)을 찍어내는 것이다.
struct Example {
var p = 0
func changeP() {
p += 1 //p를 1증가
}
}
위 코드에서 p는 가변 변수로 정의했다. 하지만 해당 구조체는 변하지 않는 스냅샷이 되어야하기에 구조체 입장에서 불변이여야할 property p를 구조체 내부 함수에서 변경할 수 없다.
var ex1 = Example()
ex1.p = 1 //p값을 변경
위 처럼 Example을 상속받아 생성한 ex1객체는 p값을 직접 수정은 가능하지만, 디자인 패턴을 지키기 위해서 구조체 내부함수에서 변경하는 방법이 필요한 상황이 생긴다.
해결책 (mutating 키워드 사용)
struct Example {
var p = 0
mutating func changeP() {
p += 1 //p를 1증가
}
}
내부 property를 변경하기 위해서 func 앞에 "mutating" 키워드를 작성하면 변경이 가능하다.
'Programming > iOS' 카테고리의 다른 글
| [Swift Tutorial] Swift UI Layout 안전 영역 / 화면 전체 채우기 (0) | 2023.10.08 |
|---|---|
| [Swift Tutorial] Swift 난수 생성, 배열 랜덤 접근 (1) | 2023.10.03 |
| [Swift Tutorial] Swift print 문 안에 수식 및 변수 넣기 (0) | 2023.10.01 |
| [Xcode] Xcode 15 playground 자동 실행 설정 (0) | 2023.10.01 |
| [Swift Tutorial] Xcode UIImage imageLiteral / imageLiteralResourceName 사용 예시 (0) | 2023.09.29 |

















