gpt4 book ai didi

objective-c - 如何避免在用户关闭时取消分配 NSPanel

转载 作者:行者123 更新时间:2023-12-03 17:04:25 28 4
gpt4 key购买 nike

我正在开发一个小而简单的状态菜单应用程序。
有一个菜单,当用户单击它时,应该会出现一个 HUD 窗口(NSPanel)。这就是我显示面板的方式:

[hudWindow makeKeyAndOrderFront: self]; 

这就是我关闭窗口的方式:

[hudWindow orderOut: nil];

这就是事件链:

  1. 当应用程序启动时,我会关闭窗口;
  2. 然后用户(就是我:-))单击菜单项并使面板出现;
  3. 然后我单击 x 并关闭面板;
  4. 然后我再次单击菜单项,窗口不再出现。

它不会再次出现,可能是因为它被释放,并且我放置了一个弱存储,否则使用 __unsafe_unretained 它会在第二次启动时崩溃。
所以我猜测是否有一种方法可以避免在用户单击窗口时取消分配窗口。
我尝试过使用强大的存储空间,但在第二次启动时我无法再次关闭它,这是一个问题。
有许多菜单状态应用程序能够显示一个窗口,而用户无需“杀死”它,我会做类似的事情。

最佳答案

您应该取消选中 IB 中的“关闭时释放”复选框(或在代码中执行等效操作)。对于面板,该框默认处于选中状态。

使用强指针可能不起作用,因为releasedWhenClosed设置会覆盖它。拥有强指针仅意味着保留计数至少为 1,但这并不能阻止系统显式向面板发送释放消息。

关于objective-c - 如何避免在用户关闭时取消分配 NSPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924105/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com