야매 iOS

[Swift] Copy on Write

the Cosmos 2023. 8. 7. 08:02

Swift에서 Reference Type이 아닌 Value Type에게만 해당된다

  • Value Type 중에서도 Collection만 해당됨 (Array, Set, Dictionary)

Copy on Write를 사용하지 않으면

  • 똑같은 데이터가 다른 메모리 주소를 가지기 때문에 비효율적이다
  • Value type의 크기가 크다면 할당하고 매개변수로 넘겨줄 때마다 복사하는 것은 매우 비싼 작업

발생 시점

  • 변수에 값을 할당할 때
  • 함수의 매개변수로 넘겨줄때

Copy on Write

  • 어떤 변경사항이 생길 때 복사가 일어난다

주의사항

  • Copy on Write는 모든 Value Type의 기본 동작이 아니다
    • Swift Standard Library는 Collection Type에만 Copy on Write를 지원한다