[swift] 값 타입과 참조 타입

이번 글에서는 Swift 언어에서 값 타입과 참조 타입에 대해 알아보겠습니다. 값 타입과 참조 타입은 Swift 언어의 중요한 개념 중 하나이며, 이를 이해하는 것은 코드를 작성하고 디버깅 하는 데 매우 중요합니다.

값 타입

값 타입은 할당된 변수나 상수가 실제 값을 포함하는 타입을 말합니다. 예를 들어, 정수형, 실수형, 문자열, 배열, 구조체 등이 값 타입에 해당됩니다. 값 타입으로 선언된 변수는 해당 값을 복사하여 다른 변수에 할당할 때, 실제 값이 복사되어 전달됩니다. 이러한 특성 때문에 값 타입의 변수들은 서로 독립적으로 존재하며, 하나의 변수가 다른 변수에 영향을 미치지 않습니다.

다음은 값 타입 예제입니다.

var firstNumber = 10
var secondNumber = firstNumber
secondNumber = 20
print(firstNumber) // 10
print(secondNumber) // 20

위의 예제에서 firstNumber 변수와 secondNumber 변수는 각각 독립적으로 값 10과 20을 가지고 있습니다. secondNumber에 새로운 값이 할당되더라도 firstNumber에는 영향을 주지 않습니다.

참조 타입

참조 타입은 할당된 변수나 상수가 값의 참조(메모리 주소) 를 가지는 타입을 말합니다. 클래스는 참조 타입에 해당됩니다. 참조 타입으로 선언된 변수들은 값이 복사되는 것이 아니고, 값이 저장된 메모리 주소가 복사되어 전달됩니다. 즉, 동일한 메모리 주소를 참조하는 변수들은 같은 값에 접근하게 됩니다.

다음은 참조 타입 예제입니다.

class SimpleClass {
    var value: Int = 10
}

var firstObject = SimpleClass()
var secondObject = firstObject
secondObject.value = 20
print(firstObject.value) // 20
print(secondObject.value) // 20

위의 예제에서 firstObjectsecondObject는 동일한 SimpleClass 객체를 참조하고 있으므로, secondObject의 값을 변경하면 firstObject의 값도 변경됩니다.

결론

Swift에서 값 타입과 참조 타입은 변수나 상수의 할당, 전달, 수정에 대한 동작 방식에서 중요한 차이가 있습니다. 이를 이해하고 적절히 활용하는 것은 안정적인 코드를 작성하는 데 도움이 됩니다. 값을 복사하는 값 타입과 값을 참조하는 참조 타입 각각의 특징을 이해하고 상황에 맞게 사용하는 것이 중요합니다.

참조: