Skip to main content

Command Palette

Search for a command to run...

[swift] Substring는 왜 있는 걸까?

Published
•1 min read•View as Markdown
[swift] Substring는 왜 있는 걸까?
R

Hi there this is red🔴

🗒 Substring 이란?

String 타입을 가지고 메서드로 변형을 하게 되면 이상하게 return 타입이 String 이 아니고 Substring 이다.

애플 공식문서가 말하길 Substring 타입은 String 타입과 거의 동일한 메서드를 가지고 있기 때문에 String처럼 사용할 수 있는 타입이라고 한다.

@frozen struct Substring

🧐 Substring이 존재하는 이유

위의 말에 따르면 String이나 Substring이나 별 다를게 없다는 건데 그럼 왜? Substring 타입을 따로 만들었을까? (귀찮게...)

바로 성능 최적화 때문이라고 한다.

Substring 타입은 String을 변환했을 때 생긴다. 그래서 저장 공간을 아끼기 위해서 변환하기 전의 String 타입의 주소를 참조해서 값을 가지고 있다.

(애플 랭귀지 가이드의 이미지)

위의 이미지를 보자.

값을 참조해서 가지고 있다가 String 으로 타입을 변환하는 순간 저장공간에 저장하기 시작한다.

StringProtocol String 과 Substring 은 모두 StringProtocol 을 준수하고 있다. 이말은 즉, 문자열을 조작하는 메서드를 생성할 때 StringProtocol 타입을 파라미터로 받는다고 한다면, String 과 Substring 을 모두 받을 수 있다는 걸 의미한다.


정말 애플 너 메모리 관리에 진심이구나...


참고문서

서브스크립트 공식 문서

랭귀지 가이드의 서브스크립트

More from this blog

[swift] String.Index 는 무엇일까?

🧐 String.Index 타입이란? 스위프트에서는 String 타입의 인덱스를 나타내기 위해서 Int 를 사용하지 않고 String.index 라는 특수한 타입을 사용한다. 그럼 이 값을 인트로 변환할 수는 없는 건가? 할 수 가 없다. 에러가 뜬다.😭 우선 스트링은 heap 에 저장 된다. (WWDC에서 말한 내용이니 이것은 맞다.) 🚨여기서 부터 뇌피셜 주의 String.Index 의 공식 문서를 보면 이 타입이 인스턴스로 var ...

Mar 18, 20222 min read
[swift] String.Index 는 무엇일까?

[iOS] delegate 구현하기

✍🏻 delegate 패턴 이란? delegate 의 뜻은 위임이다. 나의 권한을 다른 사람에게 위임하다. 원래는 내가 사용하도록 가지고 있는 권한인데 다른 사람에게 내 권한을 사용할 수 있게 위임한다. 라는 의미로 사용 된다. delegate pattern 의 의미도 같다. 원래 나의 오브젝트가 처리할 권한을 가지고 있어서 처리해야 할 일을 다른 오브젝트에게 권한을 넘겨주어서 다른 오브젝트에서 처리하도록 해주는 패턴이다. ✍�...

Mar 17, 20224 min read
[iOS] delegate 구현하기

[iOS] Notification Center 구현하기

😁 노티피케이션 센터란? 노티피케이션 센터란, 등록된 관찰자에게 알려줄 수 있도록 하는 알림 메커니즘이다. KVO 나 delegate 가 1 대 1 통신을 하는 것에 가깝다면 노티피케이션 센터는 여러곳에서 온 정보를 한 곳에서 모아서 다시 여러 곳으로 뿌려주는 것에 가깝다. 그래서 많은 사람들이 방송국에 노티피케이션 센터를 비유한다. 💻 노티피케이션 센터 구현해보기 NotificationCenter 공식 문서 노티피케이션 센터라는 이미...

Mar 17, 20224 min read
[iOS] Notification Center 구현하기
R

Red Bite Apple

7 posts

🔴🔥😚 여기에 일단 나에 대한 소개를 써보자 이건 어디에 계시 되는 것일까?