【问题标题】:UIPopoverController memory not getting released after dismiss with ARC使用 ARC 关闭后 UIPopoverController 内存未释放
【发布时间】:2012-07-02 10:11:31
【问题描述】:

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

单击按钮时会显示一个弹出框。在分配弹出框及其内容后,应用程序内存增加了大约 2.5 MiB。

由于我在内存中有 2 个单独的弹出框实例,它增加了大约 5mb。

我的问题是弹出框被关闭后,它的内存永远不会被释放。另外,因为我启用了 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];
}

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢保罗。没有'self.popOver'不是强属性。实际上,我已经使用(非原子,保留)来设置它的属性。我在'popoverControllerDidDismissPopover'委托方法中设置了'self.popOver = nil',但仍然没有释放内存.
    • 保留和强大是一回事。
    • 你确定popoverControllerDidDismissPopover 被调用了吗?
    • @skinnyTOD 是的,已经检查了“popoverControllerDidDismissPopover”是否被调用...
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-12-15
      • 2014-02-10
      • 2012-05-22
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 2013-08-27
      • 2019-02-01
      • 1970-01-01
      相关资源
      最近更新 更多