스위프트로 iOS 앱 만들기 시작했는데 struct랑 class 둘 다 거의 똑같이 생겨서요. 프로퍼티 넣고 함수 넣고 하는 게 비슷한데 언제 뭘 골라 써야 하는지 기준을 모르겠어요.
그냥 습관적으로 class 쓰다가 이상한 걸 겪었는데요. struct로 만든 걸 다른 변수에 넣고 값을 바꿨더니 원본은 안 바뀌더라고요.
struct Point { var x = 0 }
var a = Point()
var b = a
b.x = 10
print(a.x) // 0 이 나옴
근데 이걸 class로 바꾸면요.
class Point { var x = 0 }
var a = Point()
var b = a
b.x = 10
print(a.x) // 10 이 나옴
같은 코드인데 결과가 다르니까 좀 당황스러웠어요. 이게 값 타입이랑 참조 타입 차이라고 하던데 정확히 무슨 뜻인가요? b는 a를 복사한 거고 class일 때는 같은 걸 가리킨다는 것 같은데 머릿속에 그림이 잘 안 그려져요.
실무에서는 보통 struct를 기본으로 쓰고 필요할 때만 class 쓴다는 말도 봤는데 그 "필요할 때"가 대체 언제인지 예시로 알려주시면 감사하겠습니다.