我正在開發一個小而簡單的狀態菜單應用程序。
有一個菜單,當用戶點擊它時,應該出現一個HUD窗口(NSPanel)。 這是我的顯示板:如何避免在用戶關閉時釋放NSPanel
[hudWindow makeKeyAndOrderFront: self];
這是我如何關閉該窗口:
[hudWindow orderOut: nil];
所以這是事件鏈:
- 當應用程序啓動時我解僱窗口;
- 然後用戶(即我:-))點擊菜單項並使面板出現;
- 然後我點擊x並關閉面板;
- 然後我再次點擊菜單項,窗口不再出現。
它不會再出現,可能是因爲它被取消分配,並且我放了一個弱存儲器,否則使用__unsafe_unretained它會在第二次啓動時崩潰。
所以我猜如果有一種方法可以避免用戶點擊時釋放窗口。
我嘗試過強大的存儲空間,但在第二次啓動時發生這種情況,我無法再關閉它,這是一個問題。
有許多菜單狀態應用程序能夠顯示一個窗口,而用戶不會「殺死」它,我會做出類似的東西。
您是否取消選中了IB中的「關閉時釋放」複選框(或者在代碼中完成了等效功能)?默認情況下,該框被選中用於面板。 – rdelmar
這樣做,仍然要澄清爲什麼強壯它不起作用。 –
可能是因爲releasedWhenClosed設置覆蓋了該設置。有一個強指針就意味着保留計數至少爲1,但這並不妨礙系統明確向面板發送釋放消息。 – rdelmar