[swift] 컬렉션의 깊은 복사와 얕은 복사

컬렉션은 앱 개발에서 자주 사용되는 데이터 구조입니다. 컬렉션을 다른 변수에 할당할 때, 깊은 복사와 얕은 복사의 개념을 이해하는 것이 중요합니다.

얕은 복사 (Shallow Copy)

얕은 복사는 컬렉션의 요소들을 참조하는 새로운 컬렉션을 만드는 것입니다. 각 요소가 원본 컬렉션과 동일한 객체를 가리킵니다. 변경된 요소는 새 컬렉션 및 원본 컬렉션 양쪽에서도 반영됩니다.

var originalArray = [1, 2, 3]
var shallowCopyArray = originalArray

shallowCopyArray[0] = 5
print(originalArray) // [5, 2, 3]

깊은 복사 (Deep Copy)

깊은 복사는 컬렉션의 요소들의 복사본을 참조하는 새로운 컬렉션을 만드는 것입니다. 각 요소가 새로운 객체를 가리킵니다. 변경된 요소는 다른 컬렉션에 영향을 주지 않습니다.

var originalArray = [1, 2, 3]
var deepCopyArray = originalArray
for (index, value) in originalArray.enumerated() {
    deepCopyArray[index] = value
}

deepCopyArray[0] = 5
print(originalArray) // [1, 2, 3]

컬렉션을 복사할 때, 의도에 맞는 복사 방식을 선택하는 것이 중요합니다. 얕은 복사는 메모리를 아낄 수 있지만, 원본과의 의도치 않은 상호작용이 발생할 수 있습니다. 한편, 깊은 복사는 안전하지만 메모리 소비가 많을 수 있습니다.

컬렉션의 복사 방식을 선택할 때, 앱의 요구사항과 성능에 대한 고려가 필요합니다.

결론

컬렉션의 얕은 복사와 깊은 복사는 각각 원본 컬렉션과 새로운 컬렉션 간의 참조와 복사 방식을 나타냅니다. 올바른 복사 방식을 선택하여 데이터를 안전하게 다루고 효율적으로 활용할 수 있습니다.

참고 문헌: Swift Docs - Collection Types