티스토리 뷰
Substring은 String의 일부를 말합니다.
예를 들어 Subscript를 사용하거나 prefix(_ :) 메소드를 사용해서 String에서 Substring을 가져오는 경우 스위프트에서는 String처럼 사용할 수 있습니다. 둘 다 String Protocol을 따르기 때문입니다.
하지만 String과 다르게 Substring은 작업을 수행하는 짧은 시간 동안 사용해야 합니다.
즉 Substring은 장기로 사용하는 용도가 아닙니다.
위와 같이 greeting은 문자열 Hello, world! 를 가집니다.
beginning에서는 greeting의 [..<index] 즉 ", "전까지의 문자를 substring 한 Hello를 가집니다.
여기서 beginning(substring)은 새로운 메모리를 할당하지 않고 기존에 greeting상수의 메모리를 사용할 수 있습니다.
그렇기 때문에 greeting(original string)이나 beginning(substring)이 수정되기 전까지 메모리를 복사하는 비용을 지불할 필요가 없습니다. (스위프트 - 성능 최적화)
이런 메모리 재사용은 메모리 할당 비용을 줄여줍니다.
WHY ! 스위프트의 Substring은 장기로 사용할 때 적합하지 않을까요
기존에 String의 메모리를 재사용하기 때문에 String문자열 전체가 Substring이 사용되는 한 메모리에서 유지되어야 하기 때문입니다.
즉 장기로 사용할 경우는 String인스턴스로 변환해 사용합니다.
https://developer.apple.com/documentation/swift/string
String - Swift Standard Library | Apple Developer Documentation
A string is a series of characters, such as "Swift", that forms a collection. Strings in Swift are Unicode correct and locale insensitive, and are designed to be efficient. The String type bridges with the Objective-C class NSString and offers interoperabi
developer.apple.com
혹시 잘못된 부분이 있다면 말씀해주시면 감사하겠습니다. :-)
'Tech > Swift' 카테고리의 다른 글
Swift ARC에 대해서(2) (0) | 2019.04.19 |
---|---|
Swift ARC에 대해서(1) (0) | 2019.04.18 |
isEmpty와 count == 0 비교하기 (2) | 2019.04.05 |
스위프트 Copy-On-Write (0) | 2019.03.29 |
reverse()와 reversed()비교 (0) | 2019.03.24 |
- Total
- Today
- Yesterday
- leetcode
- 스위프트
- Deep learning
- string
- 책 추천
- ReactiveX
- 애니메이션
- swiftUI
- Xcode
- 책 후기
- SWIFT
- Animation
- 알고리즘
- Algorithm
- ARC
- stanford SwiftUI
- ios
- wwdc
- objc
- swift5
- 문자열
- 책
- RX
- objective-c
- 독서
- rxswift
- 딥러닝
- 머신러닝
- 스위프트UI
- iOS SwiftUI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |