문제

내가 같은 창을 표시한다고 가정 해 봅시다.

[TBADDTASKWINDOWCONTROLLER NEW] SHOWWINDOW : SELF];

TBADDTASKWINDOWCONTROLLER 객체는 어디에 출시 될 예정입니까? WindowwillClose에서 [Self Release]를 호출하는 일반적인 솔루션입니까?

사용자가 닫을 때까지 존재하기를 의미하기 때문에 다른 객체가 창을 "소유"하는 것은 옳지 않다고 생각합니다.

도움이 되었습니까?

해결책

The same code that instantiated the window controller by sending the new 수업에 대한 메시지, 마치 마치 마치 alloc 그리고 init 메시지.

다른 팁

예, 창 컨트롤러를 해제하는 일반적인 방법은 다음과 같습니다.

- (void)windowWillClose:(NSNotification *)notification
{
    [self autorelease];
}

창 컨트롤러는 창이 주변에있는 한만 살아야하므로 창이 사라지면 자동 표시가 완벽하게 이해됩니다.

다른 관찰자 등을 제거해야합니다.


ARC에서 작업하기위한 정보 추가

ARC의 경우 창이 열려있는 동안 창 제어에 대한 강력한 참조를 유지 한 다음 창을 닫을 때 제거해야합니다.
이를 위해 두 가지 방법으로 제어되는 창에 카테고리를 추가했습니다.

  • pnl_addWindowController - 창이 처음 열리면 창 컨트롤러로 호출
  • pnl_removeWindowController - 호출 windowWillClose

이 카테고리는 글로벌을 유지합니다 NSMutableSet 활성 창 컨트롤러의. 코드는 본질적으로 정당합니다 [gWindowControllers addObject:self] 그리고 [gWindowControllers removeAllObjects], NSMutableset의 게으른 창조와 잠금 장치.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top