티스토리 뷰
728x90
반응형
예를 들어 많은 객체들이 해당 클래스를 상속받아서 같은 뷰를 가져야 한다면 서브클래싱을 하는 것이 유용하다. 이를 통해 재사용성이 좋아진다.
그렇다면 무조건 서브클래싱을 하는 것이 좋을까? 고려할 사항에 대해서 생각해보자.
고려할 사항
서브클래싱을 하다보면 복잡하고 깊은 클래스들의 상속관계를 만들게 됩니다.
- 이때 서브클래싱을 하는 목적이 인터페이스만 공유하는 것이라면 프로토콜을 사용하는 것이 바람직할 수 있다.
- 또한, 많이 변경되거나 많은 구현사항을 다른 클래스에 위임하게 된다면(예를 들어, UITableViewDelegate 와 같은 delegate) 델리게이트를 사용하는 것이 훨씬 동적인 클래스를 만들기 유용하다.
- 클래스를 확장하기 위한 기능으로써 카테고리도 좋은 방법이다. 카테고리를 통해 확장된 클래스의 정의를 하거나 확장하고자 하는 연관된 메소드들을 쉽게 모듈화 할 수 있기 때문이다.
- 복합객체를 만드는 것도 방법이다.
깊은 상속 구조는 Objective-C 에서 효율적이지는 못하다고 한다. Objective-C 의 클래스의 메소드드와 프로퍼티를 호출하는 방법은 message dispatch 라는 dynamic dispatch 이다. 이때, 깊은 상속 구조를 갖게 되면 호출하는 메소드와 프로퍼티에 대응하는 것들을 찾기위해 높은 상위 클래스까지 찾아가야 하기 때문이다.
참고
728x90
반응형
'Objective-C' 카테고리의 다른 글
Objective-C) 전처리기 (0) | 2022.08.26 |
---|---|
Objective-C) 카테고리와 프로토콜 (0) | 2022.08.16 |
Objective-C) nullability (0) | 2022.08.12 |
Objective-C) 변수와 데이터 형에 대하여 (2) | 2022.08.02 |
Objective-C) 다형성, 동적 타이핑, 동적 바인딩 (0) | 2022.07.15 |
댓글
TAG
- configurable widget
- UserDefaults
- Objective-C
- async/await
- WWDC22
- containerBackground
- Widget
- Swift
- 2022 KAKAO TECH INTERNSHIP
- watchOS
- Notification
- OpenSourceLibrary
- APNS
- Algorithm
- YPImagePicker
- IOS
- CloneCoding
- WidgetKit
- MOYA
- SwiftUI
- WWDC
- Firebase
- RxCocoa
- 서버통신
- projectsetting
- github
- Protocol
- MVVM
- urlsession
- rxswift
최근에 올라온 글
최근에 달린 댓글
글 보관함
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
링크
- Total
- Today
- Yesterday