저는 코코아 응용 프로그램을 작성 중이며 창 제어기 사용에 관한 질문이 있습니다. 사용자가 메뉴 막대에서 새로 만들기를 선택하면 NSWindowController의 하위 클래스 인 MyWindowController의 인스턴스가 만들어지고 MyWindow.xib의 새 창이 표시됩니다.창이 닫히면 NSWindowController를 해제하십시오.
응용 프로그램 대리인의 작업을 처리하고 있습니다. 다음과 같은 것을 검색 한 후에 내가 본 것에서 끝낼 수 있습니다. 일단 창을 표시하면 더 이상 창 컨트롤러에 대한 포인터를 저장할 이유가 없으므로 창을 표시하기 전에이를 자동으로 할당합니다.
[[[[MyWindowController alloc] init] autorelease] showWindow:self];
이후에 곧 창을 놓으므로 창은 잠깐 동안 화면에 표시되고 사라집니다. 나는 창유리를 -showWindow : 메서드에서 유지하고 windowWillClose 알림을 받으면 스스로 풀어주는 솔루션을 발견했다.
- (IBAction)showWindow:(id)sender
{
[self retain];
[[NSNotificationCenter defaultCenter] addObserverForName:NSWindowWillCloseNotification
object:self.window
queue:nil
usingBlock:^(NSNotification *note) {
[self release];
}];
[super showWindow:sender];
}
더 좋은 방법이 있나요? Apple 설명서를 검색 한 후 사용할 사례를 찾지 못했습니다. 아주 기본적인 것 같아서 커버해야합니다. 아마도 잘못된 용어로 검색하고있을 것입니다.