我的项目中有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];
}
答案 0 :(得分:2)
我猜self.popOver
是一个强大的财产?它由这家酒店保留。当您关闭视图时,可以将此属性设置为nil(使用委托方法)。
答案 1 :(得分:0)
你确定问题是popover没有被释放吗?可能是系统正在缓存图像或其他数据。内存警告后额外的内存使用量会消失吗? (您可以在模拟器中模拟其中一个。)如果内存警告后额外的内存使用量消失,则可能不是问题。
您可以尝试使用“Allocations”或“Leaks”工具运行您的应用程序,这样可以让您了解弹出窗口是否实际被释放,以及实际占用5 MB的内容。