티스토리 뷰
728x90
반응형
클래스의 인스턴스 메소드는타입의 구조 자신의 프로퍼티 값을 수정할 때 신경 쓸 필요가 없지만, 값 타입의 구조체나 열거형 등에서는 인스턴스 메소드가 내부 프로퍼티 값을 변경할 수 없습니다.
이러한 경우 오류를 해결하기 위해서 mutating 키워드를 붙여서 명시해야 합니다.
또한, 프로토콜이 요구하는 메소드가 내부의 프로퍼티를 변경해야 한다면 메소드 앞에 mutating 키워드를 붙여 명시해야 합니다.
그렇다면 왜 값 타입의 인스턴스 메소드는 내부 프로퍼티를 변경할 수 없으며 mutating 은 왜 사용해야 하는 것일까?
Swift 에서 값 타입이 복사되었을 때는 같은 주소를 가리키다가 변경이 있을 때는 복사하여 수정하게 되는 COW(Copy on Write)가 있습니다.
값 타입의 인스턴스 메소드로 내부 프로퍼티가 변경될 수 있는지 없는지 알 수 없기 때문에 어느 시점에 복사를 해야하는지 알 수 없습니다.
그래서 mutating 키워드를 가진 메소드가 호출된다면 실제적인 복사를 해야한다고 컴파일러에게 알릴 수 있습니다.
728x90
반응형
'iOS' 카테고리의 다른 글
iOS) main.sync 를 사용하면 왜 안될까요? (0) | 2022.10.03 |
---|---|
iOS) lazy, type property 는 언제 초기화될까? (0) | 2022.09.27 |
iOS) Live Activities 와 Dynamic Island 뉴스 살펴보기 (0) | 2022.09.25 |
iOS) Xcode 14 업데이트 후 KakaoSDKAuth 업데이트(Stored properties cannot be marked potentially unavailable with @available) (0) | 2022.09.15 |
iOS) CaseIterable 을 채택한 enum (0) | 2022.09.12 |
댓글
TAG
- WWDC
- Widget
- github
- projectsetting
- Swift
- 서버통신
- SwiftUI
- WidgetKit
- APNS
- YPImagePicker
- MOYA
- MVVM
- urlsession
- watchOS
- 2022 KAKAO TECH INTERNSHIP
- RxCocoa
- Objective-C
- configurable widget
- UserDefaults
- CloneCoding
- Notification
- Algorithm
- IOS
- Firebase
- OpenSourceLibrary
- containerBackground
- Protocol
- async/await
- WWDC22
- rxswift
최근에 올라온 글
최근에 달린 댓글
글 보관함
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
링크
- Total
- Today
- Yesterday