2011-02-06 3 views
1

어떤 코드가 정확하며 그 이유는 무엇입니까?상속에 관한 질문

- (void)viewDidLoad 
{ 
    /*my code 
    */ 
    [super viewDidLoad]; 
} 

또는

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    /*my code 
    */ 
} 
+1

관련 : http://stackoverflow.com/questions/844195/super-viewdidload-convention –

답변

1

별로 중요하지 않습니다. 그것은 당신이 원하는 방식에 관한 것입니다. super이 먼저 응답 하시겠습니까, 아니면 self에 응답 하시겠습니까? 정말로 그렇게 어려운 것이 아니라면, 당신이 좋아하는 것을하십시오.

+1

확실히 중요한 상황이 있습니다 - dealloc. __ 항상 [슈퍼 dealloc]을 끝에 둡니다 .__ 그렇지 않으면 충돌 할 수 있습니다. – deanWombourne

+1

때로는 처음 일 필요가 있으며 때로는 마지막 일 필요가 있습니다. 때로는 중요하지 않습니다. * 항상 요구 사항을 문서에 적어두기 때문에 설명서를 확인하십시오. 이 특별한 경우에, 당신이 그것을 부르는 것 이상으로 중요하지 않습니다. – bbum

+0

@deanWombourne : +1 : 물론 매우 중요하지만 – v1Axvw

0

그것은 당신이 당신의 서브 클래스 코드가 이전 또는 메소드의 슈퍼 클래스의 코드 뒤에 실행할지 여부에 따라 달라집니다. 슈퍼 클래스를 호출 한 후 사용자 정의 코드를 수행하여 서브 클래스 코드가 슈퍼 클래스 코드를 따르는 것이 더 일반적이라고 말할 수 있습니다. 다시 말하지만, 당신의 노력에 달려 있습니다.

0

나는 후자라고 말하고 싶다. 직접 실행하기 전에 수퍼 클래스의 코드가 먼저 실행되기를 원합니다.

또는 함수를 완전히 바꾸려면 수퍼 클래스의 구현에 대한 호출을 주석 처리하면됩니다.

+0

"자기 건설 전, 자기 파괴 전"이 중요하지 않은 경우에는 쓰기 대답입니다. 슈퍼를 호출하지 않고 구현을 완전히 대체하는 것은 유효하다고 문서화 된 경우에만 유효합니다 (즉, 'drawRect :') – bbum