2011-11-25 7 views
0

저는 viewcontroller가 있습니다. 그 안에 nsnotification observer가 있습니다. 다른 viewcontroller.but nsnotification 관찰자 선택기에서 알림을 게시 오전 두 또는 가끔 세 번 발생. 제 질문은 내가 [view removeFromSuperview]를 사용할 때입니다; 이 viewcontrollers보기를 제거하려면 알림 관찰자가 제거 되었습니까? 나는의 ViewController 클래스 전체 응용 프로그램에 등록nsnotificationcenter 메서드가 두 번 이상 실행되었습니다.

- (void)dealloc { 
    [super dealloc]; 
    [[NSNotificationCenter defaultCenter] removeObserver:self]; 

} 

답변

2

번호

viewcontrollers이 카운트가 0

당신은보기가 다른의 ViewController에서 제거 될 때 호출 될 것이다 다른 방법을 추가하고 호출해야된다 유지할 때 메서드가 호출됩니다

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

선택기가 여러 번 호출되는 문제에 대해 더 많은 코드가 필요합니다. 알림을 게시하는 코드 줄이 여러 번 호출되지 않도록하십시오.

+0

아니요 후행 통지 방법이 한 번만 호출됩니다. 이제 그것은 두 가지 방법이 될 수 있습니다 ... viewcontroller의 두 인스턴스가 있습니다. 또는 이전에 제거되지 않은 통지 관찰자가 실행 중임을 나타냅니다 ... – sujith1406

+1

true - 자체 기록을 시도하고 동일한 주소가 인쇄되는지 확인하십시오. – DanZimm

+0

예를 들어 로깅 자체가 동일한 클래스 이름에 대해 다른 주소를 부여한 이유입니다 – sujith1406

1

NSNotification (또는 모든 운영 체제)가 아닌 하나의보기 또는의 ViewController에의 할당 해제의 방법에서이 방법을 주었다. 더 이상 사용하지 않으면 작업자를 제거 할 필요가 있습니다. 이 경우 게시 된 알림을 하나만 처리 할 수 ​​있습니다.

관련 문제