关闭&重新打开窗口泄漏内存

时间:2011-05-16 01:18:35

标签: objective-c cocoa memory-leaks

这里有问题。我正在创建一个MAAttachedWindow,然后在某个事件发生时隐藏它。以下是代码的外观:

-(void)toggleDetailShouldShow:(BOOL)show {
    if (show) {
        if (!attachedWindow) {
            NSPoint buttonPoint = NSMakePoint(NSMidX([[someView someImageView] frame]),
                                              NSMidY([[someView someImageView] frame]));
            attachedWindow = [[MAAttachedWindow alloc] initWithView:view 
                                                    attachedToPoint:buttonPoint 
                                                           inWindow:window 
                                                             onSide:12
                                                         atDistance:65.0];
            //setup here
            [attachedWindow setAlphaValue:0.0];
            [[[someView someImageView] window] addChildWindow:attachedWindow ordered:NSWindowAbove];
            [[attachedWindow animator] setAlphaValue:1.0];
        } 
    }
    else {
        if (attachedWindow) {
            [[[someView someImageView] window] removeChildWindow:attachedWindow];
            [attachedWindow orderOut:self];
            [attachedWindow release];
            attachedWindow = nil;            
        }
    }
}

当多次触发时,我的内存使用量稳步上升。这是泄漏的原因吗?

1 个答案:

答案 0 :(得分:2)

这是使用Heapshot analysis的完美情况。

您描述的症状与我在Hex Fiend撰写该文章时所看到的症状完全相同。

更有可能的是,无论泄漏是什么 - 而且实际上是你的应用程序正在吸收内存的泄漏 - 仍然与应用程序对象图的其余部分相关联。