본문 바로가기

iOS/STUDY

[Swift] Copy-on-Write 최적화

코드 상에서 값을 복사해서 담는다 하더라도, 실제 값이 바뀌기 전까지는 하나의 메모리 값을 공유해서 사용한다.

 

메모리를 적게 차지하기 위해서 Swift 언어가 내부에서 처리하는 매커니즘

 

코드로 한번 살펴보겠습니다.

var array = [1, 2, 3, 4, 5, 6]

var subArray = array[0...2]

subArray.append(7)

 

subArray 배열을 생성할 때 array의 배열 [0...2] 부분을 대입했지만

이때 값의 복사가 아니라 동일한 메모리 공간을 가르키고 있게 됩니다.

 

그리고 값의 변경이 일어날 때 (여기서 append()) 값이 복사됩니다.

 

Swift에서는 원시타입 구조체(Int, Double, String)와 Array, Set, Dictionary 등 컬렉션 구조체에 이미 구현되어 있다고 합니다.

개발자가 직접 구현하는 구조체, 클래스 같은 경우에는 Copy-on-Write가 적용되어있지 않습니다.

'iOS > STUDY' 카테고리의 다른 글

[iOS] @discardableResult  (0) 2022.04.05
[iOS] UICollectionReusableView (diffable datasource)  (0) 2022.04.02
[iOS] UISegmentedControl  (0) 2022.03.26
[iOS] UISwipeActionsConfiguration  (0) 2022.03.26
[iOS] Realm의 특징  (0) 2022.03.22