![]() |
1
5
听起来您的窗口是模态的,在这种情况下:
以下是非模态窗口的一种模式:
然后,任何想要访问或显示窗口的人都可以通过
|
![]() |
2
0
上面发布的非模态情况的解决方案是不正确的,因为类方法无法访问IVAR。我通过创建一个类方法(在名为LPWindowController的NSWindowController子类中)解决了这个问题,该类方法如下所示:
上述方法返回保留计数为1的LPWindowController实例。它还显示控制器的窗口。这一点很重要,因为否则我们将不得不依靠调用方调用“showWindow:”来显示LPWindowController的窗口。如果调用方未能做到这一点(这可能是一个bug),控制器将永远不会被释放。通过在alloc/init控制器时强制显示窗口,我们避免了这个陷阱。 接下来,在IB中,我们将窗口的委托设置为LPWindowController类,并将其添加到该类中:
第二行很重要。首先,它消除了关于“未使用的变量cont”的警告。其次,它消除了指针悬空的危险。一旦LPWindowController实例释放自身,如果cont未被nilled out,它将指向垃圾内存。 无论如何,这是我建议的解决这个问题的方法。 |
![]() |
Martin sku · 在目标C中打印时间 3 年前 |
![]() |
Vinod prajapat · 如何更新数组的最后一个元素? 3 年前 |
![]() |
subin272 · 修复iOS中的多个按钮单击事件? 7 年前 |
![]() |
James Chan · 如何使用锁定/解锁? 7 年前 |
![]() |
Josh F. · NSBundle mainBundle返回零 7 年前 |