상세 컨텐츠

본문 제목

[iOS/Swift ] UITableViewCell에서의 타입 캐스팅

IOS/키워드 정리

by 카키IOS 2022. 10. 11. 15:58

본문

Type Casting

🔥다운 캐스팅(Down Casting)

  • 부모 클래스에서 자식클래스로 형변환 하는 것
  • 자식 클래스의 프로퍼티와 메소드를 사용하기 위해서 사용
  • as? - 강제 타입 변환 시도, 변환 성공: Optional값 / 변환 실패: nil 반환
  • as! - 강제 타입 변환 시도, 변환 성공: 언래핑 된 값을 가짐 / 변환 실패: 런타임 에러 발생

 

🔥업 캐스팅(Down Casting)

  • 자식 클래스에서 부모클래스로 형변환 하는 것
  • 부모 클래스의 프로퍼티와 메소드를 사용하기 위해서 사용
  • as - 타입 변환이 확실하게 가능한 경우(업캐스팅, 자기 자신 등) 에만 사용 가능, 그외 컴파일 에러
func tableSetting() {
    mainView.tableView.register(MainTableViewCell.self, forCellReuseIdentifier: MainTableViewCell.identifier)

    mainView.tableView.delegate = self
    mainView.tableView.dataSource = self

}

...

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    
    let cell = tableView.dequeueReusableCell(withIdentifier: MainTableViewCell.identifier, for: indexPath) as! MainTableViewCell
...
}

 

 

!!질문

테이블 뷰 등록(register)에서는 타입캐스팅이 필요없지만,

셀 프로퍼티 선언(dequeue)에서는 필요하다 그 이유는?

 

다운 캐스팅을 하는 이유에 대해서 생각을 해보면 답이 나온다

위에서 설명한 바와 같이

 

🔥다운 캐스팅(Down Casting)

  • 자식 클래스의 프로퍼티와 메소드를 사용하기 위해서 사용

 

등록과정(register) 메서드에서는 해당 클래스의 프로퍼티와 메서드를 사용하지 않고

디큐를 활용하는 시점인 cellForRowAt에서는 만들어놓은 커스텀셀의 프로퍼티와 메서드를 활용해야되기 때문이다.

 

커스텀셀을 활용하는 것이 아니라면 캐스팅은 필요없습니다.

728x90
반응형

관련글 더보기