使用ARC解除后,UIPopoverController内存不会被释放

时间:2012-07-02 10:11:31

标签: objective-c ios automatic-ref-counting uipopovercontroller

我的项目中有UIPopoverController,其中ViewController包含UIDatePicker作为其内容。

单击按钮时会显示弹出窗口。在popover&它的内容被分配,应用程序内存增加约2.5 MiB。

由于我在内存中有两个单独的弹出窗口实例,它会增加大约5mb。

我的问题是在popover被解雇之后它的内存永远不会被释放。另外,由于我启用了ARC,我无法手动释放它。

任何人都可以指导我如何在与ARC一起使用弹出窗口时解除内存。

以下是代码:

-(IBAction)btnDateSelect:(id)sender
{

    CGRect popoverRect;
    appDelegate.objDtPicker = [[ViewDatePicker alloc]init];
    appDelegate.objDtPicker.delegate = self;

    self.popOver = [[UIPopoverController alloc]initWithContentViewController:
    appDelegate.objDtPicker]; 
    popOver.delegate = self;

    if ([sender tag] == 70) 
    {
        popoverRect = [self.view convertRect:[btnFromDate frame] 
                                    fromView:[btnFromDate superview]];
        bFromDate = TRUE;
        bToDate = FALSE;

    }
    else 
    {
        bFromDate = FALSE;
        bToDate = TRUE;
        popoverRect = [self.view convertRect:[btnToDate frame] 
                                    fromView:[btnToDate superview]];
    }


    popOver.popoverContentSize=CGSizeMake(400.0,216.0);
    [popOver presentPopoverFromRect:popoverRect inView:self.view 
           permittedArrowDirections:UIPopoverArrowDirectionDown 
                           animated:NO];
}

2 个答案:

答案 0 :(得分:2)

我猜self.popOver是一个强大的财产?它由这家酒店保留。当您关闭视图时,可以将此属性设置为nil(使用委托方法)。

答案 1 :(得分:0)

你确定问题是popover没有被释放吗?可能是系统正在缓存图像或其他数据。内存警告后额外的内存使用量会消失吗? (您可以在模拟器中模拟其中一个。)如果内存警告后额外的内存使用量消失,则可能不是问题。

您可以尝试使用“Allocations”或“Leaks”工具运行您的应用程序,这样可以让您了解弹出窗口是否实际被释放,以及实际占用5 MB的内容。