어떤 코드가 정확하며 그 이유는 무엇입니까?상속에 관한 질문
- (void)viewDidLoad
{
/*my code
*/
[super viewDidLoad];
}
또는
- (void)viewDidLoad
{
[super viewDidLoad];
/*my code
*/
}
어떤 코드가 정확하며 그 이유는 무엇입니까?상속에 관한 질문
- (void)viewDidLoad
{
/*my code
*/
[super viewDidLoad];
}
또는
- (void)viewDidLoad
{
[super viewDidLoad];
/*my code
*/
}
별로 중요하지 않습니다. 그것은 당신이 원하는 방식에 관한 것입니다. super
이 먼저 응답 하시겠습니까, 아니면 self
에 응답 하시겠습니까? 정말로 그렇게 어려운 것이 아니라면, 당신이 좋아하는 것을하십시오.
확실히 중요한 상황이 있습니다 - dealloc. __ 항상 [슈퍼 dealloc]을 끝에 둡니다 .__ 그렇지 않으면 충돌 할 수 있습니다. – deanWombourne
때로는 처음 일 필요가 있으며 때로는 마지막 일 필요가 있습니다. 때로는 중요하지 않습니다. * 항상 요구 사항을 문서에 적어두기 때문에 설명서를 확인하십시오. 이 특별한 경우에, 당신이 그것을 부르는 것 이상으로 중요하지 않습니다. – bbum
@deanWombourne : +1 : 물론 매우 중요하지만 – v1Axvw
그것은 당신이 당신의 서브 클래스 코드가 이전 또는 메소드의 슈퍼 클래스의 코드 뒤에 실행할지 여부에 따라 달라집니다. 슈퍼 클래스를 호출 한 후 사용자 정의 코드를 수행하여 서브 클래스 코드가 슈퍼 클래스 코드를 따르는 것이 더 일반적이라고 말할 수 있습니다. 다시 말하지만, 당신의 노력에 달려 있습니다.
나는 후자라고 말하고 싶다. 직접 실행하기 전에 수퍼 클래스의 코드가 먼저 실행되기를 원합니다.
또는 함수를 완전히 바꾸려면 수퍼 클래스의 구현에 대한 호출을 주석 처리하면됩니다.
"자기 건설 전, 자기 파괴 전"이 중요하지 않은 경우에는 쓰기 대답입니다. 슈퍼를 호출하지 않고 구현을 완전히 대체하는 것은 유효하다고 문서화 된 경우에만 유효합니다 (즉, 'drawRect :') – bbum
관련 : http://stackoverflow.com/questions/844195/super-viewdidload-convention –