UIKit Framework를 공부하며 궁금증 정리 (part 3)

7과11사이·2023년 8월 2일
0

스파르타코딩클럽

목록 보기
20/90

delegate = self는 어떤 의미를 가질까?

먼저 '프로토콜'을 채택하기 위해 우리는 프로토콜에서 지정한 함수 또는 직접 만든 함수를 활용해야한다.
다만 델리게이트의 경우, 일반적인 프로토콜과 달리 채택한 이후에 delegate = self를 활용해야 하는 것 같다.

앞서 이 글에서 delegate는 특정 코드의 대리자를 수행하는 역할을 한다 찾아보았다. delegate = self를 하는 이유는 A의 UI Component 책임을 나, B가 받겠다로 이해하면 된다.

예를 들면, UITableViewController는 테이블 뷰를 구성하기 위한 모든 메서드와 속성들을 가지고 있다. UITabelViewController의 하위 클래스라면, 이미 모든 값을 가지고 있을 것이다. 따라서 별도의 delegate 없이 자유롭게 사용이 가능하다.


하지만, UIViewController가 UITableViewController의 기능을 활용하고자 한다면 어떻게 될까?

상속 범위를 벗어난 다른 클래스이기에 기능에 대한 책임이 없다. 이 때 protocol로 UITableViewDelegate와 UITableViewDataSource를 채택시킨다면 UITableViewController이 가지고 있는 책임을 모두 위임한다는 의미를 가진다.

따라서 책임을 받는 클래스의 파일 속에서 delegate 위임을 아래와 같이 self로 지정하는 것이다. [링크]

tableView.delegate = self
tableView.dataSource = self

delegate는 하나만 가능한건가?

지금까지 찾아보기로는 single contract만 가능한 것으로 보여진다. [링크]

What is boilerplate code?

What kind of tableView types are there?

what's the difference between TableViewCell and TableView?

  • TableView를 생성(init)할 때 .plain 스타일로 지정을 했는데, TableViewCell에서도 style이 존재한다. cell은 기본 타입만 있을 줄 알았는데, 어떤 스타일 차이가 있는걸까?

reuseIdentifier은 무엇인가

indexPath.row는?

  • TableView에서는 indexPath.row, UIPicker에서는 data[component][row]로 값을 접근했다. 차이점은 분명히 있는데 접근하는 방식이 왜 다른지 구분이 안된다.

DataSource는 어떤 정보를 관리하는가

UICollectionViewFlowLayout은 무엇인가

NSLayoutConstraint or topAnchor.constraint....?

Why use .zero when creating frame?

0개의 댓글