class 와 struct의 차이점에서 이해했듯 값타입과 참조타입이 있는데( https://teol-it.tistory.com/25 )
struct, enum, tuple 와 기본자료형( Int, Float, Double, Bool, String, Array, Dictionary, Set ) 등은 값타입으로 되어있고
특히 기본자료형은 struct로 만들어져있습니다.
참조타입은 class, function(closure) 등이 있습니다.
-- 값 타입은 깊은복사라고 해서 데이터의 새로운 복사본을 생성하는 것이고
-- 참조타입은 원본 데이터를 참조하는 얕은 복사라고 합니다 그래서 얕은복사인 참조타입(class func)은 원본데이터의 값을 변경하는 것이고 구조체와 같은 값타입은 원본데이터의 값을 변경하지 않고 새로운 데이터를 만들어 거기에 저장하는 것입니다.
+ Swift에서는 COW(copy on write)라고 해서 값타입이 변경되었을때 새로운 메모리를 확보하여 저장하지만, 원본과 복사데이터가 일치하는 경우에는 새로운 메모리를 확보하여 저장할 필요가 없기때문에 원본과 복사본 데이터가 변경되었을때만 메모리를 할당합니다.
'Swift > Swift 언어이해' 카테고리의 다른 글
옵셔널 바인딩과 if let, guard let이해 (0) | 2023.12.09 |
---|---|
Swift - 타입캐스팅이란? (1) | 2023.12.08 |
swift mutating func 키워드란? (1) | 2023.12.02 |
for ~ in과 for each의 차이 (0) | 2023.11.04 |
class와 struct의 차이 (0) | 2023.10.31 |