小さくてシンプルなステータスメニューアプリケーションを開発しています。
メニューがあり、ユーザーがそれをクリックすると、HUDウィンドウ(NSPanel)が表示されます。これが私がパネルを表示する方法です:
[hudWindow makeKeyAndOrderFront: self];
これが私がウィンドウを閉じる方法です:
[hudWindow orderOut: nil];
これがイベントチェーンです。
- アプリが起動したら、ウィンドウを閉じます。
- 次に、ユーザー(私です:-))がメニュー項目をクリックして、パネルを表示します。
- 次に、xをクリックしてパネルを閉じます。
- 次に、メニュー項目をもう一度クリックすると、ウィンドウが再び表示されません。
おそらく割り当てが解除されたために再び表示されることはなく、弱いストレージを配置しました。そうしないと、__ unsafe_unretainedを使用すると、2回目の起動時にクラッシュします。
したがって、ユーザーがウィンドウをクリックしたときにウィンドウの割り当てを解除しないようにする方法があるかどうかを推測しています。
強力なストレージを試してみましたが、2回目の起動時にこのケースを再度閉じることができず、問題が発生します。
ユーザーがウィンドウを「殺す」ことなくウィンドウを表示できるメニューステータスアプリケーションはたくさんありますが、私は似たようなものを作成します。