Objective-C) 서브클래싱을 고려할 때

less than 1 minute read

예를 들어 많은 객체들이 해당 클래스를 상속받아서 같은 뷰를 가져야 한다면 서브클래싱을 하는 것이 유용하다. 이를 통해 재사용성이 좋아진다.

그렇다면 무조건 서브클래싱을 하는 것이 좋을까? 고려할 사항에 대해서 생각해보자.

고려할 사항

서브클래싱을 하다보면 복잡하고 깊은 클래스들의 상속관계를 만들게 됩니다.

  • 이때 서브클래싱을 하는 목적이 인터페이스만 공유하는 것이라면 프로토콜을 사용하는 것이 바람직할 수 있다.
  • 또한, 많이 변경되거나 많은 구현사항을 다른 클래스에 위임하게 된다면(예를 들어, UITableViewDelegate 와 같은 delegate) 델리게이트를 사용하는 것이 훨씬 동적인 클래스를 만들기 유용하다.
  • 클래스를 확장하기 위한 기능으로써 카테고리도 좋은 방법이다. 카테고리를 통해 확장된 클래스의 정의를 하거나 확장하고자 하는 연관된 메소드들을 쉽게 모듈화 할 수 있기 때문이다.
  • 복합객체를 만드는 것도 방법이다.

깊은 상속 구조는 Objective-C 에서 효율적이지는 못하다고 한다. Objective-C 의 클래스의 메소드드와 프로퍼티를 호출하는 방법은 message dispatch 라는 dynamic dispatch 이다. 이때, 깊은 상속 구조를 갖게 되면 호출하는 메소드와 프로퍼티에 대응하는 것들을 찾기위해 높은 상위 클래스까지 찾아가야 하기 때문이다.

참고

Objective-C 서브 클래스에 관한 팁 · Wireframe

Categories:

Updated: