iOS/Swift

[Swift] 문자열은 참조 타입이 아닌 값 타입이다?

Dev.Andy 2023. 4. 24. 23:17

📌 문자열의 타입은 값 타입(Value Type)

Xcode에서 String의 Definition 검색

Xcode에서 String을 입력하고 커맨드(command) 키를 누른 채로 String을 눌러 보자.

Xcode Playground에서 String의 Definition의 검색 이미지
Xcode Playground에서 String의 Definition을 검색해 보자

 

Swift에서 문자열은 구조체이다. 따라서 문자열은 값 타입이다.

String이 구조체(struct)로 구현되어 있는 것을 알 수 있다. 아직 블로그에서 다루지는 않았지만 Swift에서 구조체는 값 타입이다. 따라서 String은 값 타입(value type)이다.

Swift의 String은 struct로 구현한 코드 이미지
Swift의 String은 struct로 구현했다

 

값 타입의 특징 - 복사본의 전달/할당

  • 값 타입의 특성 상, 문자열 값을 함수/메서드에 전달할 때나 상수/변수에 할당할 때 그 값은 복사되어 복사된 값이 전달/할당 된다.
  • 전달/할당 된 복사본의 문자열은 원본의 문자열을 수정한다고 해서 복사본이 수정되지 않는다.

 

📌 참고 자료