2013-06-09 2 views
0

사용자 지정 UITableViewHeaderFooterView 클래스와 사용자 지정 UITableViewCell 클래스가 있습니다. 이 두 클래스는 몇 가지 메소드와 변수를 공유합니다. 나는 주위의 것들을 다루는 대신 공유 된 메소드와 변수를위한 수퍼 클래스를 만드는 것이 더 낫다고 생각한다. 그러나이 두 개의 사용자 정의 클래스에는 이미 다른 수퍼 클래스가 있습니다.두 개의 다른 클래스가 Objective-C의 동일한 수퍼 클래스에서 상속받습니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

+0

기본적으로 다른 개체 (셀 및보기)입니다. 그들은 UIView보다 일반적인 것에서 내려와서는 안됩니다. 객체가 비슷해 보이기 때문에 상태를 공유 할 필요가 없습니다. – CodaFi

+0

아마도 당신 말이 맞을 것입니다. 나는 그 패턴이 있을지도 모른다고 생각했다. – Jensen

답변

0

실제로 어떤 클래스가 사용 중인지 확인하면서 UIView에 범주를 추가 할 수는 있지만 실제로 상태를 나타내지는 않습니다. 이 상태는 대리인에 있어야합니다.

프로토콜을 만들 수도 있지만 둘 다 구현해야합니다.

그 이상으로 나는 그들이 동일한 대의원을 공유 할 수 있다고 상상할 수 있습니다.

0

당신이 여기에 원하는 것은

프로토콜 일부 정도 다중 상속 (MI)의 부재를 해결 목적 C.에 의해 (직접) 지원되지 않는 다중 상속입니다 : 기술적으로, 프로토콜에 해당합니다 미시건 순수하게 "추상"클래스 (아래의 '프로토콜'에 대한 답변 참조).

당신이 사용할 수있는 세 가지 다른 옵션이 있습니다 :

프로토콜 (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocProtocols.html)

구성 (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html%23//apple_ref/doc/uid/TP40002974-CH6-SW15)

메시지 전달 (특히 전달 및 다중 상속) (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtForwarding.html)