Swift TIL(52)

웰디(Well-D)·2023년 10월 17일
0

Sweet & Soft, SWIFT

목록 보기
50/76

복습

문자열 이제 중요한 부분 들어간다고 하니 내일의 나야 화이팅
잘라서 공부하니 조금 연속성은 떨어진다(아쉽)
정리하는 것은 좋다
지난번에 이해도를 3정도 표시한 부분이 5로 올라가서 역시 두세번씩 공부해야하는 구나 한번 더 다짐했다.

간단히 정리

접근제어

  • 의도치 않은 변경방지, 은닉화/캡슐화 가능, 코드영역분리 등

  • open/public/internal/fileprivate/private(개방/고수준 - 은닉/저수준)

  • 클래스 / open이 가장 최상개념 , 구조체 / public이 가장 최상개념

  • internal 같은 모듈 내에서만 접근가능(디폴트)

  • fileprivate 같은 파일내에서만 / private 같은 스코프 내에서만

  • 모듈은 라이브러리등 import하여 사용하는 모든 파일묶음

  • 접근수준을 가질수있는 요소는 독립요소(타입, 변수/속성, 함수/메서드/생성자/서브스크립트,프로토콜)

  • 가장 중요한 원칙 : 저수준(은닉)은 고수준(개방)에 접근가능하다

  • _변수이름 : 보통의 경우 private

  • 변수에 선언되는 접근제어와 할당되는 타입의 관계

  • 타입내부 멤버와 타입자체의 접근제어 관계

  • 타입자체의 private선언의 의미와 최종 동작 접근제어 (fileprivate)

  • 명시적 접근수준 타입의 내부멤버에 명시적 접근수준 없을시 internal 디폴트

  • 슈퍼클래스와 서브클래스의 접근제어 관계

  • 서브클래스에서 슈퍼클래스의 메서드 재정의의 경우 접근제어 수준을 올려서 재설정 할 수 있을까? 가능하다면 왜 가능할까?

  • 확장시 본체의 동일한 접근수준유지, 멤버접근가능

  • 보통 쓰기의 접근수준이 더 낮다(저수준/은닉) => private(set)의 유용함

문자열과 문자

  • 아스키코드 < 유니코드(아스키코드 포함)

  • 스위프트 문자열은 유니코드값(코드포인트 스칼라값)으로 구성, 가변인코딩 특성(메모리활용 굿)

  • 스위프트 String(구조체 값타입) => 의미기반 / 오브젝트 C NSString(클래스 참조타입) => UTF-16 유니코드 기반 (count 와 lenght시 출력다름) / 상호 toll free bridged 로 타입캐스팅 as 로 타입변환 자유자재 가능

  • 스위프트 문자열 => 단순 인덱스 사용불가 (의미단위 인식)

  • 한과 ㅎ ㅏ ㄴ 의 차이

  • \ escape character 백슬래시 사용한 escape character sequence 알아두기

  • """ 줄바꿈 """ => 특징알기, 들여쓰기, 엔터인식, \n넣을때와 \넣었을때 차이 , 특수문자 인식

  • #rawString 확장구분자 / 앞뒤 #개수(개수무관) 통일 필수, 줄바꿈은 제공 안하는 있는그대로의 문자열 인식가능한 구분자

  • 문자열보간법(interpolation) print와 dump의 차이(인스턴스 자체 출력 / 문자열보간법 사용출력 차이

  • swift 4 : CustomStringConvertible 프로토콜채택후 description 구현 => 문자열 보간법이란 description속성을 읽는 행위

  • swift 5 : StringInterpolation메서드 내부에서 appendInterpolation메서드 구현 (style등 파라미터 추가 가능 / 확장가능) mutaing 키워드 필수 / 기본파라미터로 커스텀 적용할 타입을 받음 => 문자열 보간법이란 appendInterpolation메서드에 해당 인스턴스, 변수를 아규먼트로 던지고 메서드를 실행하는 것

  • 숫자 to 문자열 : 출력형식지정자 Format Specifiers String(format=" %로 시작하는 변환형식", 변환할데이터) / NumberFormatter클래스 => 인스턴스 생성후 내부 속성을 설정 (버림, 자릿수 , 올림 등등) => 인스턴스의 string메서드 사용 string(for: 숫자)

  • 서브스트링개념 / 인덱싱 , prefix, suffix 등 기존 문자열의 일부를 사용할때 적용되는 스위프트의 메모리공유 개념으로 인한 타입 (String.Subsequence타입)

  • 원문자열 수정 시 서브스트링 => 스트링으로 타입변환되며 메모리공간 신설

  • 기본적으로 메모리공유임 => 오래사용할 경우 String생성자를 통해 새롭게 메모리공간을 할당해주어야 함

  • 문자열 to 배열 : map , Array() , Array(arrayLiteral: ) 각각 어떤 타입이 출력될지 예상해보자

  • 배열 to 문자열 (문자열배열 to 문자열 joined매서드 / 문자배열 to 문자열 String생성자)

  • 문자열을 뒤섞는 알고리즘을 어떻게 위의 개념들로 적용할수있을지 생각해보자 (마이너한 방법도 생각해보기)

profile
Wellness 잘사는 것에 진심인 웰디입니다. 여러분의 몸과 마음, 통장의 건강을 수호하고싶어요. 느리더라도, 꾸준히

0개의 댓글