什么是负责释放NSWindowController的对象?
-
06-07-2019 - |
题
可以说我显示的一个窗口,像这样:
[[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和一些锁定。
不隶属于 StackOverflow