[swift] Swift 딕셔너리에서 얕은 복사와 깊은 복사의 차이점은?
- 얕은 복사는 복사된 딕셔너리가 원본 딕셔너리의 참조를 포함하며, 내부의 객체는 실제로 복사되지 않습니다. 이는 내부 객체에 대한 변경이 복사본과 원본에 모두 영향을 미칠 수 있음을 의미합니다.
- 깊은 복사는 딕셔너리와 그 내부 객체의 모든 데이터의 복사본을 생성하므로, 원본과 복사본은 완전히 독립적입니다. 이는 내부 객체에 대한 변경이 서로에게 영향을 미치지 않음을 의미합니다.
예를 들어, 다음은 얕은 복사와 깊은 복사의 차이를 보여주는 Swift 코드입니다.
// 얕은 복사
var originalDict = ["name": "John", "age": 30]
var shallowCopyDict = originalDict
shallowCopyDict["name"] = "Mike"
print(originalDict) // 출력: ["name": "Mike", "age": 30]
// 깊은 복사
var deepCopyDict = originalDict
for (key, value) in originalDict {
deepCopyDict[key] = value
}
deepCopyDict["name"] = "Sarah"
print(originalDict) // 출력: ["name": "Mike", "age": 30]
따라서, 얕은 복사는 원본과 복사본이 서로 영향을 주고 받을 수 있지만, 깊은 복사는 완전히 독립적인 복사본을 생성하여 원본과의 연관성을 끊습니다.
더 자세한 내용은 Swift 공식 문서를 참고하시기 바랍니다.