2010-03-02 2 views
23

속성을 재정렬하기 전에 [super viewDidUnload] 호출간에 차이가 있는지 알고 싶습니다.iPhone : [super viewDidUnload] 호출 순서

감사합니다.

self.webView = nil; 
    self.fullText = nil; 
    [super viewDidUnload]; 

또는

[super viewDidUnload]; 
    self.webView = nil; 
    self.fullText = nil; 
+0

관련 항목 : http://stackoverflow.com/questions/2148450/viewdidload-unload-messages-to-super – cregox

+1

가능한 [[super viewDidLoad]'대회] 중복 (http://stackoverflow.com/questions/) 844195/super-viewdidload-convention) –

답변

12

이는 슈퍼 클래스가 viewDidUnload에서 무엇을하는지에 따라 달라집니다. 단지 UIViewController 표준이라면 -[UIViewController viewDidUnload]은 아무 것도하지 않기 때문에이 중 하나가 수행됩니다.

+0

죄송합니다. 이미 어떻게 든 답변을 보지 못했습니다! – conorgriffin

+1

다른 경우 - 즉,'[super viewDidUnload]'가 표준'UIViewController'가 아니고'viewDidUnload'에서 무엇인가합니까? – matm

+5

@delirus : "정리"하는 메소드의 경우, super의 구현은 대개 이후에 호출됩니다. 마찬가지로 "초기화"하는 메서드는 먼저 super를 호출해야합니다. – rpetrich

2

보기의 수퍼 클래스가 실제로 viewDidLoad에서 수행하는 경우에만 중요합니다. UIViewController 기본값은 viewDidLoad에서 아무 것도하지 않으므로보기가 표준 UIViewController 인 경우 [super viewDidLoad]viewDidLoad 방법의 어느 곳에 나 쓸 수 있습니다. 그러나 superviewDidLoad에있는 경우 [super viewDidLoad]을 입력하는 것이 중요합니다.

+0

그는 [super viewDidUnload]에 대해 묻지 않습니다 viewDidLoad. –

6

이 질문에 대한 답변이 완전하지 않습니다. (그리고이 주제에 대한 Google의 첫 번째 히트 곡이므로 완전한 대답은 나와 다른 사람들에게 유용 할 것입니다.)

수퍼 클래스가 viewDidUnload에서 무언가를하면 다음과 같이 클래스의 viewDidUnload : 속성을 공개하기 전이나 후에? 기록을 위해

, 합의가 마지막 슈퍼 메서드를 호출하는 것 같다 :

-(void)viewDidUnload {
    self.some_property = nil;
    [super viewDidUnload];
}

10

나는 그것이 중요 결코 생각하지 않았다,하지만 우리는 단지 앱을 먼저 호출 추락 버그를 발견. 제 사무실의 추세는 그것을 마지막으로 부르는 것이 었 습니다만, Apple 템플리트가 그것을 가장 먼저 나타냅니다.

원하는대로 할 수는 있지만, 지금부터는 항상 마지막으로 부릅니다.

+1

흥미롭게도, 아웃렛을 IB에서 코드로 드래그하면, 수퍼 콜이 템플릿과 코멘트의 위치를 ​​감안할 때 아무런 의미가 없습니다. – typeoneerror

+0

@ZaBlanc과 같은 경험이 있습니다. 추락! – raheel

+0

템플릿이 먼저 쓰지만, 안전 기능으로 마지막에 넣습니다. 슈퍼가 프로그램을 망칠 수있는 무언가를 언로드하는 경우를 대비 해서요. – ArtSabintsev

2

이것은 dealloc 메소드와 같습니다.

- (void)dealloc 
{ 
    [array release]; 
    [super dealloc]; 
} 

그래서 우리는 [super viewDidUnload]을 마지막으로 호출해야한다고 생각합니다.

+0

애플은 viewDidUnload 템플릿을 업데이트해야합니다. – neoneye