스위프트 문자열을 효율적으로 사용하기 위해서 이해해야할 것들이 있다.
<aside>
📌 목차
</aside>
개요
- 문자열은 일련의 문자들이다.
- 스위프트에서 문자열은
String
타입으로 표현된다.
String
타입 인스턴스의 내용물은 다양한 방법으로 접근할 수 있다.
- 여기에는
Character
타입 컬렉션으로 접근하는 방법도 포함된다.
- [x] 스위프트 캐릭터는 몇바이트?
- 스위프트에서 모든 문자열은 인코딩에 독립적인 유니코드 문자들로 이루어져 있습니다.
- 다양한 유니코드 표현방식으로 이 문자들에 접근할수 있도록 지원을 제공합니다.
<aside>
💡 스위프트의 String
은 Foundation 의 NSString
클래스와 연결되어 있습니다. (is bridged with)
Foundation 은 또한 NSString
에 의해 정의된 메서드를 노출하기 위해 String
을 확장합니다.
즉, Foundation 을 임포트하면, String
타입에서 캐스팅 없이 NSString
메서드에 접근할 수 있습니다.
- [ ] 즉 bridged 되어있는 타입들의 특징 중 하나는, 캐스팅 없이다른 타입의 멤버에 접근 가능하다는 뜻인가 보다!!!!! (지금까지의 추측)
</aside>
Performance Optimizations
- 문자열의 성능 최적화는 두 가지 측면이 있다.
1. copy-on-write
- 우선 스위프트 String 타입은 value-semantics 을 가지고 있다.
- 하지만 copy-on-write strategy 을 사용하여 데이터를 버퍼에 저장한다.
- 이 버퍼는 다른 복사된 문자열들에 의해 공유될 수 있다.
- 즉, 여러 개의 스트링 인스턴스가 하나의 버퍼를 사용할 수 있다.
- this buffer can then be shared by different copies of a string
- 한 개 이상의 스트링 인스턴스가 같은 버퍼를 사용하고 있을 때, 변경이 있을 때 lazy copy 한다