2011-03-04 2 views
2

인스턴스 변수가 dealloc (아래 그림 참조)에 발표되었지만 정확히 그것이라고 불리우는 것을 알고 있습니까? 모든 인스턴스 변수가 앱 종료 시점에 발표 되나요? 아니면 불필요하게 될 때 개별적으로 할당 취소 할 수있는 방법이 있습니까?언제 AppDelegate에서 dealloc()이 호출됩니까?

- (void)dealloc { 
    [fred release]; 
    [wilma release]; 
    [barney release]; 
    [betty release]; 
    [super dealloc]; 
} 
+0

가능한 중복 [응용 프로그램을 종료 할 때 dealloc 메서드가 정상적으로 실행됩니까?] (http://stackoverflow.com/questions/5079563/does-dealloc-method-being-executed-normally-when-quitting-the- application) – Vladimir

+0

감사합니다, 블라디미르,하지만 저는 그것이 불리는 특정 시간을 아는 것보다 많이 불리우는 지에별로 관심이 없습니다. –

+1

그냥 명확하게 - 당신은 방법의 끝에서'[super dealloc]'을 잊었습니다.) – Eimantas

답변

6

다른 객체와 마찬가지로 다른 객체가 객체를 보유하지 않을 때 응용 프로그램 대리인이 할당 해제됩니다. 앱이 끝날 때까지 계속 다니지 않는 앱 델리게이트를 갖는 것은 매우 드문 일이며, 다른 사람들이 지적했듯이, 앱은 종료하기 직전에 앱을 출시하고 할당을 해제하지 않을 수도 있습니다.

나는 앱이 아닌 다른 객체가 그것을 보유하지 않고 애플리케이션을 새로운 델리게이트에게 주면 앱 델리게이트가 해제 될 것이라고 생각한다. 비정상적인 상황을 제외하고, 앱 델리게이트의 -dealloc 메소드는 아마도 매우 자주 호출되지는 않습니다. 하지만 이것이 올바르게 구현되어서는 안된다는 의미는 아닙니다. 예상되는 동작이며 향후 출시 될 iOS에서 쉽게 바뀔 수 있습니다.

관련 문제