Swift/Swift 언어이해

Swift - 값, 참조 타입에 대한 개념 (COW)

Teol 2023. 12. 3. 15:24

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