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