IT

KVO 및 ARC 제거 방법

lottoking 2020. 9. 12. 10:25
반응형

KVO 및 ARC 제거 방법


ARC 아래 의 염색 된 관찰에서 어떻게 구성되어 있습니까? 관찰 튼 추가하고 제거하는 것을 잊었습니까? 더 이상 메모리를 수동으로 관리하지 관찰에서 물러나야할까요?

예를 들어, 뷰 컨트롤러에서 :

[self.view addObserver:self
            forKeyPath:@"self.frame"
               options:NSKeyValueObservingOptionNew 
               context:nil];

이전 removeObserver:에는 뷰 컨트롤러의 dealloc메서드를 호출 했습니다 .


-deallocARC에서 여전히 구현할 수있는 키 값의 관찰을 제거 할 수 있습니다 . [super dealloc]더 이상이 메서드 내에서 호출하지 않습니다 .

-release이전 에 재정의 잘못된 것입니다.


이 코드로 수행

- (void)dealloc
{
@try{
    [self.uAvatarImage removeObserver:self forKeyPath:@"image" context:nil];
} @catch(id anException) {
    //do nothing, obviously it wasn't attached because an exception was thrown
}
}    

스택 오버플로의 다른 곳 에서 Chris Hanson은 고유 목적을 위해 메서드를 사용하고 소유자가 개체가 완료 할 수 있음을 알릴 수 있습니다. 무효화 메서드를 구현할 것을 권장합니다. 과거에 저는 Hanson의 솔루션이 잘 고려되어 있다고 생각합니다.

참고 URL : https://stackoverflow.com/questions/6959896/kvo-and-arc-how-to-removeobserver

반응형