익스텐션

박형석·2021년 11월 29일
0

Swift

목록 보기
3/20
post-thumbnail

익스텐션?

  • 구조체, 클래스, 열거형 타입에 새로운 기능을 추가할 수 있음

    • 클래스의 상속은 특정 타입을 물려받아 하나의 새로운 타입을 정의하고 추가 기능을 구현하는 수직 확장
    • 익스텐션은 기존의 타입에 기능을 추가하는 수평 확장
    • 그렇기 때문에, 익스텐션은 타입에 새로운 기능 추가 O 재정의 X
  • 내부의 구체적인 구현은 몰라도 타입만 안다면, 해당 타입의 기능을 확장할 수 있다.

    • 외부 라이브브러리나 프레임워크에 있는 타입도 가능
    • 스위프트 표준 라이브러리도 대부분 익스텐션으로 구현되어 있음.
  • 추가 가능한 기능 리스트

    • 연산 타입 프로퍼티 (static)
    • 연산 인스턴스 프로퍼티
    • 인스턴스 메서드 / 타입 메스더
    • 이니셜라이저
      • 클래스 타입에 편의 이니셜라이저는 추가 O, 지정 이니셜라이저는 추가 X, 디이니셔라이저도
      • 값타임은 상관없음, 다만 이니셜라이저를 추가했을 때, 모든 저장 프로퍼티에 기본값이 있거나 타입에 기본 이니셜라이저와 멤버와이즈 아니셜라이저 외에 추가 사용자 정의 이니셜 라이저가 없다면, 기본과 멤버와이즈 이니셜라이저를 Extension에서 호출 할 수 있다.
    • 서브스크립트
    • 중첩 데이터 타입 : Extension 안에 중첩 데이터 타입을 가질 수 있다.
    • 특정 프로토콜을 준수할 수 있도록 하는 기능 추가
extension 타입 이름 : 프로토콜1, 프로토콜2, TableViewDelegate {
 
 var typeToString: String {
  return "\(self.rawlavlue)"
 }
 
 // 클래스 타입
 convenience init() { }
 
 subscript
 
 struct NewStruct {
 }
 
 func tableview(_ tableView: UITableView, dequeueReusableCell:) { }
 
}
profile
IOS Developer

0개의 댓글