2010-07-21 2 views
1

이것은 아마도 전에 물어볼 것이지만 무엇을 검색해야할지 모르겠습니다. 이제 내 계층 구조입니다 : NSObject> FirstSubclass> SecondSubclass. 하지만 특정 조건이 충족 될 때 FirstSubclass에서 몇 가지 세부 사항을 변경해야하는 앱의 새 기능을 구현할 것입니다. 그래서 FirstSubclass의 동작을 덮어 쓰려면 FirstSubclass와 SecondSubclass 사이에 서브 클래스가 필요합니다. SecondSubclass 자체에서 일을 덮어 쓸 필요는 없지만 모든 다른 SecondSubclass 하위 클래스에는 super이 필요합니다. "then then statements"을 사용하여 FirstSubclass의 모든 것을 바꿀 수는 있지만 처음에는 다른 옵션이 없는지 확실하게 알고 싶었습니다. 이를 위해 "프로토콜"이 필요합니까? SecondSubclass : FirstSubclasslass <WeirdThingIDontKnow>처럼?서브 클래 싱에 관한 질문

+0

Weell ... 그리고 질문은 무엇입니까? – Gobra

+0

내가 필요한 "종류"가 무엇인지 묻기 위해 편집했습니다. – Michael

답변

0

ducktyping이 필요합니다. 목표 C에서는 respondsToSelector, performSelector 또는 NSInvocation을 사용하여 수행 할 수 있습니다. 이렇게하면 클래스 계층을 훨씬 단순하게 만들 수 있습니다.

0

FirstSubclass에서 파생 된 (예 : InBetweenSubClass) 새 개체를 만들고 FirstSubclass의 필요한 메서드를 재정의합니다. 그런 다음 FirstSubclass 대신 InBetweenSubClass에서 파생되도록 SecondSubclass를 변경하십시오.

Objective-C에 해당하는 "대체"가 없으며 동일한 서명으로 메소드를 구현하기 만하면 기본 클래스의 메소드가 대체됩니다. 특별한 조건이 충족되면 새로운 방법을 사용하고 그렇지 않으면 기본 (수퍼) 클래스의 방법을 사용하십시오.

-(void) test 
{ 
    if (self.specialcondition) 
    { 
     [self newTest]; 
    } 
    else 
    { 
     [super test]; 
    } 

} 
관련 문제