繁体   English   中英

模态呈现的UIViewController在关闭时不会清空内存

[英]Modally presented UIViewController does not empty memory on close

我有一个问题,到目前为止,这已经导致我花了很多小时/天进行调试。

我的情况是:

  • 我有一个显示一些数据的ViewController
  • 当用户单击按钮时,将以模态方式显示另一个视图控制器
  • 用户关闭模式控制器后,内存使用量不会减少

我在任何地方都没有模态视图的引用(弱引用或强引用)。

这是segue的执行方式:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
   UINavigationController *nav = [segue destinationViewController];
   SomeViewController *vc = (SomeViewController *)[nav topViewController];
   vc.dataArray = self.dataArray; // dataArray is a weak reference
}

这就是我关闭它的方式:

-(void)closeButtonClickHandler:(id)sender
{
   [self dismissViewControllerAnimated:YES completion:nil];
}

在我的viewDidDisapear方法中,我将所有内容都设置为nil

- (void)viewDidDisappear:(BOOL)animated
{
    [self.map removeAnnotations:self.myMap.annotations];
    self.map.delegate = nil;
    self.map = nil;

    self.view = nil;

    [super viewDidDisappear:animated];
}

但是控制器仍保留在内存中。 更糟糕的是,如果我多次打开它,它将一直添加到消耗的内存中,直到最终迫使操作系统关闭该应用程序为止。

任何/所有帮助表示赞赏:)

我发现一个小的侧视图具有错误的参考集。 这是“强”,应该是“弱”

@property (nonatomic, weak) UISomeView * someView;

此后,内存正常释放,不再堆积

tnx @JonathanCicohons的提示:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM