클래스, 구조체, 열거형에 대해 다시 한 번 살펴보며 비교해보자.
언뜻보면 구조체랑 클래스랑 비슷해 보인다. 연관된 몇몇의 값들을 모아서 하나의 데이터 타입으로 표현하고 싶을 때 쓴다는 점에서.
하지만, 다음과 같은 경우에는 구조체를 사용해야 한다.
Apple 프레임워크에서 프로그래밍을 할 때에는 주로 클래스를 많이 사용한다.
값 타입은, 데이터를 전달할 때 값을 복사하여 전달하고
참조 타입은, 데이터를 전달할 때 값의 메모리 위치를 전달한다.
아래 예시를 보면 차이점이 뭔지 직관적으로 이해가 더 잘 될 것이다.
여기서 알 수 있는 점은, 클래스의 경우, 두 참조가 모두 같은 인스턴스를 가리키고 있으므로, 값이 전달될 때 복사되는 것이 아니라 참조값이 복사돼서 간다는 것을 알 수 있다.
결과값은 Property 이다.
someStructInstance가 someFunction으로 전달될 때에는, 복사가 되어서 전달되기 때문이다.
결과값은 ABC 이다.
원래있던 인스턴스(someClassInstance)의 참조가 someFunction으로 전달되었기 때문에, localVar도 계속 똑같은 인스턴스를 참조하기 때문이다.