TIL

[Sesac IOS] 12일차 TIL

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


Learned

    • UITableView
      • 셀 마다 높이를 다르게 설정하고 싶다면 heightForRowAt 메소드를 재정의해서 사용
        rowHeight 프로퍼티는 모든 셀이 동일한 높이를 가지게 함.
      • viewDidLoad 메소드보다 테이블뷰의 데이터 소스 메소드가 우선함.
        viewDidLoad가 먼저 호출이 되기 때문
      • IndexPath 구조체 타입은 ExpressibleByArrayLiteral 프로토콜을 conform 하기 때문에
        indexPath == [0, 0] 같은 표현이 가능하다.
    • CaseIterable 프로토콜 : 열거형의 모든 값들을 모아놓은 배열을 제공해주는 프로토콜
      allCases라는 타입 프로퍼티로 배열에 접근할 수 있다.
    • StoryBoard Reference와 탭바 또는 네비게이션 컨트롤러를 같이 사용할때
      탭바 및 네비게이션 아이템을 스토리보드로 설정하지 못할 수도 있다.
      ex) 레퍼런스 자체에 네비게이션 컨트롤러를 Embed할 경우 레퍼런스 안의
      뷰 컨트롤러들은 코드로 네비게이션 아이템을 설정해야함.
    • Extension
      • 클래스, 구조체, 열거형, 프로토콜을 확장(extension)해서 새로운 기능을 추가할 수 있게 해줌.
      • 초기자, 타입 및 인스터스 메소드, 계산 프로퍼티, 프로토콜 conform 등을 추가할 수 있다.
      • Object-C와의 호환성을 위해 Extension 구문에서 일부 메소드에 한해
        override가 허용되지만 extension 구문에 override은 지양하자
      • 지정 초기자 (Designated Initializer)와 저장 프로퍼티는 추가할 수 없다.
      • 많이 사용되는 기능을 추가할때 Extension 사용을 권장함.
        → 자잘한 기능들을 계속 추가할 수록 무거워질 수 있기 때문에
      • 과하게 사용할 경우 원래 타입의 구조를 파악하기 어려워질 수도 있기 때문에
        전체적인 구조를 생각하면서 코드를 설계하는 것이 중요하다.

'TIL' 카테고리의 다른 글

[Sesac IOS] 15일차 TIL  (0) 2022.07.22
[Sesac IOS] 13~14일차 TIL  (0) 2022.07.22
[Sesac IOS] 11일차 TIL  (0) 2022.07.18
[Sesac IOS] 10일차 TIL  (0) 2022.07.16
[Sesac IOS] 9일차 TIL  (0) 2022.07.14