可以说我显示的一个窗口,像这样:

[[TBAddTaskWindowController新的]showWindow:自];

哪里是TBAddTaskWindowController对象意味着被释放?是通用的解决方案,打电话给[自我释放]在windowWillClose?

它不会感觉有任何其他物体的"自己的"窗口,因为它意味着存在,直到用户的关闭。

有帮助吗?

解决方案

通过将 new 消息发送到类来实例化窗口控制器的相同代码,就像它通过 alloc init完成它一样消息。

其他提示

是的,一个共同的方法来做到释放的窗口控制器:

- (void)windowWillClose:(NSNotification *)notification
{
    [self autorelease];
}

窗口控制器所需的生活只是作为只要的窗口周围,这样autoreleasing它当窗口走开非常有意义。

记得要删除任何其他观察员,等等。


[添加信息用于下工作弧]

电弧,你需要保留一个强大的参考窗口控制,同时打开了窗口,然后拆除它的时候窗口关闭。
要做到这一点,我增加了一个类别在窗口控制有两个方法:

  • pnl_addWindowController —称为通过该窗口控制时,窗口是第一次打开
  • pnl_removeWindowController —叫 windowWillClose

的类别保持一个全球性的 NSMutableSet 活性窗口控制器。代码是本质上只是 [gWindowControllers addObject:self][gWindowControllers removeAllObjects], 有些懒惰的建立NSMutableSet和一些锁定。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top