2009-03-15 2 views
1

에서 알림을 보낼 수 없습니다 :NSWorkspace notificationCenter 내가 잘못 여기서 뭔가 일을 해요 경우 잘 모르겠어요 쓰레기 수거

을 나는

[[[NSWorkspace sharedWorkspace] notificationCenter] 
    addObserver:self 
     selector:@selector(noteReceived:) 
      name:nil 
     object:nil]; 

선택기로 awakeFromNib

이 조각을 사용하여 작업 공간 알림을 등록하고 있습니다 noteReceived:은 단일 문자 NSNotification *을 매개 변수로 취합니다. 그리고 그것에 브레이크 포인트가 있습니다.

GC를 해제 한 상태에서 컴파일하면 정상적으로 작동하며 모든 알림을받습니다.

GC가 켜지면 내 앱이 시작될 때 알림이 하나뿐입니다. 그게 전부입니다.

이 나는 ​​뭔가를 놓치고 있습니까?

솔루션 : 뭔가 실종됐다

. 이것은 간단한 테스트 프로젝트 였으므로 실제 앱에있을 컨트롤러 사이에는 일반적인 연결이 없었습니다. nib/xib 파일에서 오브젝트를 인스턴스화하고 수집하지 않을 것으로 기대하는 것만으로는 충분하지 않습니다.

일단 컨트롤러를 File의 소유자 (대리자 메서드를 구현하지 않아도)의 대리자로 만들면 개체를 유지하는 데 충분합니다.

답변

2

GC에서는 NSNotificationCenter가 관찰 대상에 대한 약한 참조 만 유지합니다. 따라서 관측 대상이 개체 계층의 어딘가에 뿌리를두고 있는지 확인하십시오.

+0

감사합니다. 솔루션을 찾는데 도움이되었습니다. – Abizern

관련 문제