2011-04-14 1 views
0

사과에서 < Memory Management> 아울렛에 대해 이야기 할 때의 문서.dealloc에서 출구 변수를 nil로 설정해야합니까 (IOS 3.0 이후에도)?

그것은 당신이 콘센트 대 0을 설정하여 접근 메소드를 호출 에 viewDidUnload을 구현할 수 사용자 정의 뷰 컨트롤러 클래스의

을 말한다.

이 경우에는 접근 자 메소드를 호출하여 nil이 객체를 해제하고 포인터를 nil로 설정하면 충돌이 발생할 수있는 무효 포인트에 대한 액세스가 금지 될 수 있기 때문에이를 이해할 수 있습니다.

그러나 그 후

, 그것은 말한다 :

참고 : iOS에서 3.0 이전의 viewDidUnload 방법을 사용할 수 없습니다. 이 예와 같이 대신하면 :, setView에 닐 에 출구를 설정한다 : 또한

- (void)setView:(UIView *)aView { 
    if (!aView) { // View is being set to nil. 
     // Set outlets to nil, e.g. 
     self.anOutlet = nil; 
    } 
    // Invoke super's implementation last. 
    [super setView:aView]; 
} 

의 UIViewController로 인해 의 세부 사항, 할당 해제의 구현은 또한 출구 설정해야 의 dealloc에서 전무로 변수 :

- (void)dealloc { 
    // Release outlets and set outlet variables to nil. 
    [anOutlet release], anOutlet = nil; 
    [super dealloc]; 
} 

1) 당사 심지어 우리가 전무을 설정해야 할당 해제에? (dealloc은 객체 라이프 사이클의 마지막 단계라고 생각합니다. 아무도이 객체를 통해 콘센트에 액세스 할 수 없습니다.) 2) iOS 3.0 이상에서 nil을 설정해야합니까? (코드를 발견했습니다. 자동 생성 된 Xcode는 출력 변수에 nil을 설정하지 않고 만 출력합니다.

답변

2

아니요, 콘센트를 dealloc으로 설정하지 않아도됩니다. 당신이 그들을 풀어주고 있는지 확인하십시오.