Objective c UIPopoverController内存在使用ARC关闭后未释放
我的项目中有一个Objective c UIPopoverController内存在使用ARC关闭后未释放,objective-c,ios,automatic-ref-counting,uipopovercontroller,Objective C,Ios,Automatic Ref Counting,Uipopovercontroller,我的项目中有一个UIPopoverController,其中的ViewController包含一个UIDatePicker作为其内容 单击按钮时会显示弹出窗口。在popover及其内容被分配后,应用程序内存增加了大约2.5个MiB 由于我在内存中有两个不同的popover实例,它增加了大约5mb 我的问题是在popover被删除后,它的内存永远不会被释放。此外,由于启用了ARC,我无法手动释放它 有谁能告诉我,当popover与ARC一起使用时被丢弃时,如何释放内存 代码如下: -(IBActi
UIPopoverController
,其中的ViewController包含一个UIDatePicker作为其内容
单击按钮时会显示弹出窗口。在popover及其内容被分配后,应用程序内存增加了大约2.5个MiB
由于我在内存中有两个不同的popover实例,它增加了大约5mb
我的问题是在popover被删除后,它的内存永远不会被释放。此外,由于启用了ARC,我无法手动释放它
有谁能告诉我,当popover与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];
}
我猜是self.popOver是一个强大的属性?它由该属性保留。关闭视图时,可以将此属性设置为nil(使用委托方法)。是否确定问题在于未解除分配popover?可能是系统正在缓存图像或其他数据。内存警告后,额外内存使用是否消失?(你可以在模拟器中模拟其中一个。)如果额外的内存使用在内存警告后消失,这可能不是问题
您可以尝试使用“分配”或“泄漏”工具运行您的应用程序,这将让您了解popover是否实际被解除分配,以及究竟是什么占用了您的5MB 谢谢你,保罗。没有“self.popOver”不是强属性。实际上,我已经使用(非原子,retain)设置了它的属性。我在“PopOvercontrollerdDismissPopover”委托方法中设置了“self.popOver=nil”,但是仍然没有释放内存。retain和strong是一样的。你确定调用了
PopOvercontrollerdDismissPopover
吗?@Skinytod Yes已选中调用了“PopOvercontrollerdDismissPopover”。。。