작고 간단한 상태 메뉴 응용 프로그램을 개발 중입니다.
메뉴가 있으며 사용자가이를 클릭하면 HUD 창 (NSPanel)이 나타납니다. 이것은 내가 패널을 표시하는 방법입니다사용자가 닫을 때 NSPanel을 할당 해제하는 것을 피하는 방법
- 응용 프로그램이 시작 내가 해고 :
[hudWindow orderOut: nil];
그래서 이벤트 체인의 :
[hudWindow makeKeyAndOrderFront: self];
이 내가 창문을 기각하는 방법입니다 창문;
- 그러면 사용자 (즉, :-))가 메뉴 항목을 클릭하고 패널을 표시합니다.
- 그런 다음 x를 클릭하고 패널을 닫습니다.
- 그런 다음 메뉴 항목을 다시 클릭하면 창이 다시 나타나지 않습니다.
아마도 할당이 해제되어서 약한 저장소를 넣었습니다. 그렇지 않으면 __unsafe_unretained를 사용하면 두 번째 실행시 충돌이 발생합니다.
그래서 사용자가 클릭 할 때 창 할당을 피하는 방법이 있다면 추측하고 있습니다.
강력한 저장 용량을 사용해 보았지만이 경우 두 번째 실행에서 다시 닫을 수 없어 문제가됩니다.
사용자가 "죽일"수없는 창을 표시 할 수있는 많은 메뉴 상태 응용 프로그램이 있습니다. 비슷한 것을 만들 것입니다.
IB의 "Closed When Closed"체크 박스를 선택 취소 했습니까? 이 상자는 기본적으로 패널에 대해 선택됩니다. – rdelmar
그랬 으면, 강하지 만 그것이 효과가없는 이유를 분명히해야합니다. –
아마도 releasedWhenClosed 설정이이를 무시하기 때문일 수 있습니다. 강력한 포인터를 가지고 있다는 것은 보유 개수가 적어도 하나는된다는 것을 의미하지만 시스템이 패널에 명시 적으로 해제 메시지를 보내는 것을 막지는 않습니다. – rdelmar