2009-08-19 5 views
1

거대한 코드 덩어리를 서로 공유하는 여러 클래스 (컨트롤러)가 있습니다. 이 코드 조각을 어떻게 제외 할 수 있습니까? 이 코드는 프로토콜에 속하는 몇 가지 메소드입니다. 즉, 모든 컨트롤러는이 프로토콜과 관련하여 동일한 방식으로 작동합니다. 그들은 이미 다른 컨트롤러의 하위 클래스이기 때문에 같은 부모의 하위 클래스로 만들 수 없습니다.Obj-C의 다른 클래스에서 코드를 재사용하는 가장 좋은 방법은 무엇입니까?

답변

3

집계 사용 :) 프로토콜을 준수하는 단일 재사용 가능한 클래스를 작성하고 위임하십시오.

+0

+1 - 이것은 위임과 정확히 일치합니다. –

+1

전적으로 아닙니다. 위임은 제어 결정을 한 곳 또는 클래스 계층 외부의 어떤 곳에 집중하고자 할 때 사용됩니다. 질문이 읽을 때, 이것은 똑바로 상속으로 해결 될 것 같아 보인다. – bbum

0

당신은 종류의 다중 상속이가

1

이 일반적인 컨트롤러의 모든 클래스가 상속되는 추상 슈퍼 클래스 확인에 대한 그들 ... 프로토콜을 구현하는 몇 가지 슈퍼 클래스에서 "상속"http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html 회담 할 수 있습니다. 그 추상 수퍼는 필요한 프로토콜을 구현할 수 있으며 상대적으로 일반적인 또는 매우 특정한 하위 또는 하위 하위 클래스가 재정의 할 수 있습니다.

iPhone SDK의 다양한보기/응답기를 고려하십시오.

UIResponder 클래스는 이벤트 처리 기능을 제공합니다.

드로잉 기능을 추가하는 UIView 하위 클래스.

UIControl 하위 클래스 UIView는 동작과 같은 다양한 컨트롤을 추가합니다.

UIButton, UITextField, UISlider 등이 있습니다. 모두 UIControl의 서브 클래스가 특정 기능을 추가합니다.

주의 깊게 살펴보면 NSCoding (및 NSObject) 프로토콜은 계층 구조의 다양한 클래스에서 지원되는 것으로 선언되며 필요한 경우보다 구체적인 하위 클래스가 우선 적용됩니다.

1

공통 수퍼 클래스 (필요한 경우 NSObject)에 범주를 추가하십시오.

관련 문제