TIL

[Sesac IOS] 7일차 TIL

7일차 수업을 듣고 새로 알게된 점과 알고싶은 점을 정리한 글입니다.


Learned

  • Content Hugging Priorty와 Content Compression Resistance
    • 두 개 이상의 뷰 객체 사이에서 레이아웃을 설정할때 사용하는 속성들이다.
    • 내부 텍스트에 따라 고유 사이즈를 가지는 두 개의 UILable 사이에 레이아웃을 설정한다고 가정하면
      상대적으로 우선순위가 높은 레이블이 자신의 고유 사이즈를 유지한다.
    • Hugging은 크기가 늘어나야 하는 상황에서 어떤 뷰가 늘어날지 결정하고,
      Compression은 크기가 줄어들어야 하는 상황에서 어떤 뷰가 줄어들지 결정한다.
    • 이 값들은 기본적으로 250, 750, 1000 같은 정수를 기준으로 정해져있다.
  • 코드로만 사용할 수 있는 뷰 컨트롤러들이 존재한다.
UIAlertController, UIDocumentPickerViewController, UIMenuController, UIFontPickerViewController 등 

 

  • UIButton의 타입(custom, system)에 따라 버튼 이미지 렌더링 방식이 다르다.
  • 이미지 에셋에서 렌더링 방식을 변경할 수도 있지만 UIImage 객체의
    withRenderingMode 메소드를 사용할 수도 있다.
  • 일부 메소드 중 반환값이 존재하는 것과 그렇지 않는 것의 차이는 이미 존재하는 데이터를 수정하는가와
    수정된 새로운 데이터를 반환하는가의 차이다.
Array.shuffle()와 Array.shuffled()의 차이
Set.subtract()와 Set.subtracting()의 차이

 

  • 열거형(Enumeration)
    • 열거형은 이미 존재하는 값을 선택하게 해서 값을 직접 입력할때 발생할 수 있는 오류를 줄이고
      서로 연관된 데이터들을 하나의 타입으로 구성하기 위해 사용한다.
    • 열거형을 사용하는 과정에서 오류가 발생했을 시 컴파일 과정에서 컴파일러가 오류를
      인지할 수 있기 때문에 안전한 코드를 작성할 수 있다.
    • Associated Value으로 같은 타입이지만 다른 값을 가지는 case를 만들 수 있다.
enum Barcode {
    case upc(Int, Int, Int, Int)
    case qrCode(String)
}
Barcode의 종류는 UPC와 QRCode가 있지만 바코드가 담고 있는 내부의 정보는 모두 다르므로
위 처럼 열거형을 선언할 수 있고 여기에 담긴 데이터를 아래처럼 Switch 구문에서도 사용할 수 있다.
switch productBarcode {
case let .upc(numberSystem, manufacturer, product, check):
    print("UPC : \(numberSystem), \(manufacturer), \(product), \(check).")
case let .qrCode(productCode):
    print("QR code: \(productCode).")
}

 

  • Raw String
    • 기존의 문자열에서 경계 문자( " )와 이스케이프 문자( \ )를 사용하기 위해서는 문자 앞에 "\"를
      붙여줘야 했는데 이런 불편함을 해결하기 위해 Swift 5부터 지원하는 새로운 문자열 표현
    • #"문자열 내용"# 의 형식으로 문자열 내부에 " 와 \ 를 자유롭게 사용할 수 있다.
    • 줄 바꿈 또는 String Interpolation을 사용하고 싶다면 \#n, \#(변수) 를 사용한다.
    • 문자열 내부에 "#"을 쓰고 싶다면 문자열을 감싸는 "#"의 개수를 다르게 해주면 된다.
      즉, #의 개수에 따라 경계 문자와 이스케이프 문자가 변경되는 원리
String Start Delimiter Escape Delimiter String End Delimiter
" \ "
#" \# "#
##" \## "##
####" \#### "####

 

 


이상입니다.

'TIL' 카테고리의 다른 글

[Sesac IOS] 9일차 TIL  (0) 2022.07.14
[Sesac IOS] 8일차 TIL  (0) 2022.07.13
[Sesac IOS] 6일차 TIL  (0) 2022.07.11
[Sesac IOS] 5일차 TIL  (0) 2022.07.09
[Sesac IOS] 4일차 TIL  (0) 2022.07.07