2014-04-24 5 views
0

Objective-C에서 개체의 수퍼 클래스 메서드를 어떻게 호출합니까?Superclass 메서드 호출

예를 들어 개체 "foo"의 인스턴스가 있다고 가정 해 봅시다.

"foo"에는 재정의 된 메서드가 있습니다. 이 오버 라이딩 된 메서드를 호출하고 싶지 않습니다. 대신 foo 객체 인스턴스에서 원래 메서드를 호출하려고합니다.

당신은 할 수 없습니다

[[instance super] super_method];를 지금까지 내가 알고있다. 그러면 어떻게해야할까요?

-(void) callsuper 
{ 
    [super super_method]; 
} 

및 수행 :

는 내가하는 방법 푸에 추가 할 수 있습니다 알고

[foo callsuper];

다른 방법? 나는 그것을 수행하기위한 방법을 만들고 싶지 않습니다.

+2

'[super someMethod];를 직접 호출하지 않는 이유는 무엇입니까? - 왜 전화를 걸지? –

+0

someMethod는 foo의 클래스에 의해 대체됩니다. 그는 서브 클래스의 구현을 통과시키고 수퍼 클래스의 구현을 직접 호출하려고합니다. 그것은 정말로 가능합니까? 그리고 그 목적/이점이 무엇인지 궁금합니다. – PeterWong

+0

디자인 패턴이 맞습니까? [fooInstance fooClassMethod];를 직접 호출 할 수 있습니다. –

답변

0

키워드 super이 처리합니다. 그것은 매우 일반적으로 -init 방법에서 볼 수 있습니다. 다음은 그 예입니다. 이 경우

- (id)init { 
    if (self = [super init]) { 
     // custom initialization 
    } 
    return self; 
} 

super 키워드는 -init 방법이 클래스의 슈퍼 클래스 구현을 호출하는 데 사용됩니다. super은 수퍼 클래스가 구현하는 모든 메소드에서 사용할 수 있습니다.