0

我有一个模态UIViewController。在收到内存不足警告时,我想关闭该模式。为此,我编写了以下代码 -

- (void)didReceiveMemoryWarning
{
    [self dismissViewControllerAnimated:YES completion:nil];
    [super didReceiveMemoryWarning];
}

这在大多数情况下都可以正常工作。但是,当我初始化视图控制器,但还没有在屏幕上呈现它,并且当时出现内存警告时,代码执行继续,模态不会因为它还没有呈现而被关闭,当我的执行到达它被呈现的点,模态仍然出现。

我该如何处理这种情况并防止模态出现?如果有什么不清楚的地方请告诉我——我会尽力解释得更好。

4

2 回答 2

0

你能根据下面的代码检查结果吗...

- (void)didReceiveMemoryWarning
{
    if(!self.myVC)
    {
     [self presentViewController:myVC animated:NO 
     completion:
               { [self dismissViewControllerAnimated:NO completion:nil];}];
    }
    else
     [self dismissViewControllerAnimated:YES completion:nil];
}
于 2013-05-03T10:33:40.483 回答
0

当您收到内存警告并且您的模态未显示时,您可以释放模态视图控制器并将其等同于 nil。您可以在呈现模态视图后设置一个布尔值,并在 didReceiveMemoryWarning 中使用它来关闭已经呈现的模态视图。

-(void)didReceiveMemoryWarning
{
    if(!_isModalPresnted)
    {
        [_modalViewController release]
        _modalViewController = nil;
    }
    else
    {
        [self dismissViewControllerAnimated:YES completion:nil];
    }
}

因此,当您的执行达到呈现的程度时,您可以进行检查

if(_modalViewController)
{
      _isModalPresnted = YES;
     [self presentViewController:_modalViewController animated:YES completion:nil];

}
于 2013-05-03T10:41:09.053 回答