Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c UIPopoverController内存在使用ARC关闭后未释放_Objective C_Ios_Automatic Ref Counting_Uipopovercontroller - Fatal编程技术网

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”。。。