복습 : 상속은 본질적으로 성격이 비슷한 타입을 새로 만들어 데이터를 추가하거나 기능을 변형시켜 사용하는 것을 의미
확장 (Extension)
- 클래스/구조체/열거형에 모두 가능하며 extension 키워드를 사용
- 현재 존재하는 타입에 기능(메서드 형태)을 추가해 사용하는 것을 의미, 수평 확장
- 본질적으로 기존의 메서드 테이블 외 따로 메서드를 추가하는 것
- 기존 메서드 재정의는 불가능
- 단, @objc 키워드를 사용하면 가능해지긴 함
- 확장이 정의되기 전 생성된 경우에도 기존 인스턴스에서 새 기능 사용 가능
- 장점은 애플이 미리 만들어놓은 클래스/구조체/열거형 같이 원본 소스 코드에 대한 엑세스 권한이 없는 유형을 확장해 내가 원하는 메서드를 사용할 수 있도록 구현이 가능함 (소급 모델링 retroactive modeling)
class SomeType {
}
extension SomeType {
func doSomeThing() {
}
}
타입의 확장 가능 멤버의 종류 (메서드 형태만 가능)
- (타입) 계산 속성, (인스턴스) 계산 속성
- (타입) 메서드, (인스턴스) 메서드
- 새로운 생성자
- 클래스의 경우 편의 생성자만 추가 가능
- 구조체의 경우 지정생성자를 호출하는 형태로도 생성자 구현 가능
- 서브스크립트
- 새로운 중첩 타입 정의 및 사용
- 프로토콜 채택 및 프로토콜 관련 메서드
728x90
'FRONT-END > iOS' 카테고리의 다른 글
Swift Method Dispatch (0) | 2023.08.01 |
---|---|
Swift 프로토콜(Protocols) (0) | 2023.08.01 |
Swift 타입캐스팅(Type Casting) (0) | 2023.07.31 |
클래스의 상속, 초기화, 생성자 (0) | 2023.07.31 |
Swift 간단한 앱을 만들 때 알면 좋은 기초 문법들 (0) | 2023.07.26 |
댓글