누군가 내 알림 문제를 도울 수 있기를 바랍니다. 올바르게 설정 한 것처럼 보이지만 예상대로 전달되지 않은 알림이 있습니다. 문서 기반 앱을 개발 중입니다. 대리인/문서 클래스의 게시물이 저장된 파일에서 읽어 알림 :코코아 문서 기반 앱 : 관찰자가 항상 알림을받지 못함
[[NSNotificationCenter defaultCenter] postNotificationName:notifyBsplinePolyOpened object:self];
로깅 내가 저장 한 문서를 열 때마다이 선에 도달 하더군요. DrawView 클래스에서
, 나는 windowOpen 통지를 관찰자가 있고 bsplinePoly 오픈 알림을 파일 :[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(mainWindowOpen:)
name:NSWindowDidBecomeMainNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(savedBspline:)
name:notifyBsplinePolyOpened
object:nil];
- (void) mainWindowOpen:(NSNotification*) note
{
NSLog(@"Window opened");
_mainWindow = [note object];
}
- (void) savedBspline:(NSNotification*) note
{
NSLog(@"savedBspline called");
NSLog(@"note is %@", [note name]);
}
행동이 이상하다. 주 창을 저장하고 닫은 후 다시 열면 "창 열림"메시지가 표시되지만 "저장된 B 스플라인 호출 됨"메시지는 표시되지 않습니다. 메인 윈도우를 열어두고 이전에 저장 한 세션을 열면 "윈도우가 열렸습니다"라는 메시지와 "savedBspline called"메시지가 나타납니다.
온라인 토론과 Apple DevCenter 설명서를 검색했지만이 문제를 보지 못했습니다.
감사합니다. Nikolai. 나는 시간을 내 코드 승/성공으로 쳐다 보았다. 그리고 당신의 의견은 나를 문제에 직접 인도했다. 옵저버는 DrawView 클래스의 initWithFrame 메소드에서 호출됩니다. 로깅을 사용하여 새 창이 열릴 때이 메서드가 호출되기 전에 "누락 됨"알림이 전송된다는 사실을 알았습니다. addObserver에 코드를 수정하여 알림을 수신 할 위치를 지정합니다. – roysolay