공부하며 적는 글입니다.
Swift에는 참조타입와 값 타입이 있다. 이 중에 값 타입은 복사의 의미를 가지고 있다.
이게 무슨말이나면, 만약에 값 타입 변수에 대입 하거나 매개변수로 넘겨주게 되면, 해당 값의 데이터가 모두 복사 된다라는 뜻이다.
동일한 값이라도 가리키고 있는 주소는 다르다란 소리이다.
그럼 그 방식인 Copy On Write에 대해 알아보자.
Swift에서 엄청 큰 데이터를 변수에 대입하거나 매개변수로 넘기면 그에 상응하는 복사 연산을 하게 된다. 당연한 소리이다. 크기가 크면 그만큼 복사해야하는 것 또한 많아질 것 이다.
이런 이슈를 최소화 하기 위해서 Swift의 표준 라이브러리는 배열과 같은 몇몇의 값 타입에 대해, 하나의 참조만 있다면 복사가 아니라 해당 참조 내에서 값 변경이 일어나는 메커니즘을 설계 했다.
이게 무슨말이냐, 데이터를 복사할 때 실제로 값을 복사하지 않고, 동일한 값을 참조하다가 데이터 변경이 발생될 시에만 복사해서 값을 변경하는 기법이다.