5

나는 그렇게처럼 내보기 컨트롤러의 init 방법에 알림 관찰자를 설정 :알림 관찰자는 어디서 제거해야합니까?

[[NSNotificationCenter defaultCenter] 
        addObserver:self 
        selector:@selector(saveState) 
        name:UIApplicationWillResignActiveNotification 
        object:nil]; 

이 경우이 알림에 대한 removeObserver:name:object:를 호출 할 수있는 가장 좋은 장소입니다. 현재 내 dealloc 메서드에서 호출하고 있지만 문제가 발생할 수 있는지 알고 싶습니다.

답변

8

아니요, 맞습니다. dealloc은 통지 관찰자를 제거 할 올바른 위치입니다 (관찰자를 먼저 제거해야하는 특별한 이유가없는 한).

+0

감사합니다. 확인해 주셔서 감사합니다. –

+0

공식 문서를 참조하십시오. – rraallvv

1

항상 관찰자를 viewWillDisappear:에서 제거 할 수 있습니다. 또는 사용이 끝났을 때 관찰자를 필요 없게 할 수 있습니다.이 기능을 기능에 배치 할 수 있습니다.

+0

보기가 다시 나타나지 않는 한. 'viewWillAppear :'에서 알림 관찰자를 시작하면 여러분의 접근 방식이 효과가 있다고 생각합니다. –

1

-saveState이 경우에만 활성화 한 번 실행해야하는 경우에, 당신 수 removeObserver -saveState 내부.

+0

아마도 앱이 활성화되어 다시 활성화되면 다시 저장하고 싶을 것입니다. –

+0

당신이 옳습니다. 앱이 활성화되면 다시 옵서버로 등록 할 것이라고 확신합니다. – AechoLiu

+0

방금 ​​예를 들어'saveState'를 사용했지만, 앱이 배경을 입력 할 때와 같이 반복해서 호출해야 할 것입니다. 그래서'dealloc'을 더 잘 사용하는 것이 좋습니다. –

관련 문제