일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 문자열
- 책
- 책 후기
- 알고리즘
- Animation
- ios
- objective-c
- 딥러닝
- Deep learning
- SWIFT
- swift5
- 스위프트
- 머신러닝
- iOS SwiftUI
- string
- wwdc
- 독서
- 애니메이션
- stanford SwiftUI
- Xcode
- rxswift
- ARC
- 스위프트UI
- RX
- 책 추천
- Algorithm
- leetcode
- swiftUI
- objc
- ReactiveX
- Today
- Total
THIS IS ELLIE
스트링 본문
스위프트 스트링은 character의 집합으로 이루어진 유니코드 문자 값이다.
구조체로 스트링이 선언되어있다.
String은 오브젝티브 씨의 NSString와 연결되며 문자열과 함께 동작하는 C 함수와의 상호 운용성을 제공한다.
문자열은 리터럴이나 문자열 보간을 사용해 새문자열을 만들 수 있다.
리터럴은 “” 따음표로 묶인 일련의 문자이다.
문자열 보간은 포함된 표현식을 평가하고 결과를 문자열 형식으로 변환하는 문자열 리터럴이다.
여러 줄 문자열 리터럴은 세 개의 큰 따옴표로 묶여 있으며 각 줄 바꿈 문자는 각각의 줄에 있다.
들여 쓰기는 닫는 구분 기호의 들여 쓰기와 일치하도록 여러 줄 문자열 리터럴의 각 줄에서 된다.
문자열 수정 및 비교
문자열은 사본을 수정하면 원래 문자열의 영향을 받지 않는다.
Value type이기 때문이다.
== 동등 연산자나 관계 연산자 > < <= 를 사용해 문자열이 같은지 비교하는 작업은 유니코드 정식 표현을 사용해 수행한다.
let cafe1 = "Cafe\u{301}"
let cafe2 = "Café"
는 print (cafe1 == cafe2) true가 출력된다.
성능 최적화
스위프트의 문자열에는 값 의미가 있지만 문자열 데이터를 버퍼에 저장하기 위해 copy on write전략을 사용한다.
이 버퍼는 문자열의 다른 복사본에 의해 공유될 수 있다.
문자열의 데이터는 하나 이상의 문자열 인스턴스가 동일한 버퍼를 사용하는 경우에만 복사된다.
그러므로 첫 번째 시퀀스는 O(n)의 시간과 공간을 소비할 수 있다.
문자열의 인접한 저장소가 가득 차면 새 버퍼를 할당해야 하며 데이터를 새 저장소로 이동해야 한다.
문자열 버퍼는 많은 추가 작업에 대해 평균을 계산할 때 문자열에 일정한 시간 연산을 추가하는 전략을 사용한다.
'낑낑' 카테고리의 다른 글
머신러닝 추천 생성하기 (0) | 2019.11.26 |
---|---|
난수는 어떻게 생성될까? (0) | 2019.10.11 |
퀵소트 개선 방법 (0) | 2019.09.24 |
When to use delegate notification closure KVO (0) | 2019.08.17 |
스위프트로 하는 iOS 프로그래밍 (0) | 2019.07.24 |