yoogail105 / KkokkoSwift

꼬리에 꼬리를 무는 swift 개념 정리
28 stars 0 forks source link

# COW #23

Open yoogail105 opened 2 years ago

yoogail105 commented 2 years ago

COW Copy-on-Write

Swift에서는

Swift 값 타입의 복사는 값이 변경될 때 된다 Collection 타입을 복사해서 사용할 때 일어난다. *CollectionType? Array, Dictionary, Set, ...

var array1 = [1,2,3,4]
var array2 = array1

위의 상태에서는 값이 복사되지 않는다. array2가 array1을 참조하고 있는 중. 왜? 값이 변화되지 않았으니까

array1[0] = 1

그런데 이렇게 array1에 값이 변화(수정)되었을 때, 이 때 복사가 일어난다. 이렇게 되면 값이 복사되는데, array2는 변화가 없으므로 같은 메모리주소를 가지고, 변화가 일어난 array1이 다른 주소를 가지게 된다.

array1[0] = 9

위와 같은 경우에 array1은 또 다른 새로운 메모리 주소를 가진다. 반면 array2는 맨 처음 할당된 메모리 주소를 그대로 유지하고 있다.

print(array1) // [9,1,2,3]
print(array2) // [0,1,2,3]

수정이 일어날 때 결국 복사를 하는데, 머하러 cow하는 것임? 바로 복사하면 안돼?

: cow사용이유, 장점

기타 특징 및 한계

🔖 참고