서브스크립트란
Swift에서 콜렉션, 리스트, 시퀸스 등 집합의 특정 멤버 엘리먼트에 대괄호를 사용하여 간단하게 접근할 수 있는 문법입니다.
만약 직접 서브스크립트를 구현하려면 다음과 같이 형식을 통해 구현할 수 있으며 오버로딩 또한 지원합니다.
subscript(index: Int) -> Int {
get {
// 적절한 반환 값
}
set(newValue) {
// 적절한 set 액션
}
}
String에서 서브스크립트 사용?
결론부터 말하면 Swift에서 String은 가변의 크기를 가지기 때문에 Int기반의 인덱스 참조가 불가능합니다.
저번 포스트에서 알아봤듯이 String은 무엇으로 구성되어 있을까?
String은 결국 characters로 구성된 컬렉션 타입이며 이 character들은 확장된 문자소 클러스터(extended grapheme cluster)로 하나 이상의 Unicode scalar value로 구성되어 있습니다.
즉, 사람이 보고 구분할 수 있는 하나의 Character를 나타내기 위해 하나 이상의 Unicode scalar value를 사용하고 있고 가변적인 크기를 가지며 또한 Swift에서 String을 위해 Unicode Scalar View, UTF-16 View, UTF-8 View와 같이 다양한 뷰를 지원하고 있기때문에 인덱스 기반으로 접근하였을때 어떤 뷰를 기준으로 인덱싱을 지원 해야하는지에 대한 애매함이 존재합니다.
'iOS > Swift' 카테고리의 다른 글
강한 참조가 사라지면 진짜 ARC가 해제시켜줄까? 에 대한 메모리 실험 (0) | 2023.11.11 |
---|---|
weak, [weak self]를 사용하여 순환참조를 해결하기 + 메모리 영역 확인 (0) | 2023.11.09 |
[Swift] AnyObject란? (런타임 시점에 결정된다) (0) | 2023.02.23 |
[Swift] String과 Substring을 메모리에서 효율적으로 관리하는 방법 (0) | 2023.02.18 |
[Swift] 문자열은 무엇으로 구성되어 있을까? - Extended Grapheme Clusters (0) | 2023.02.18 |