0

我有一个按钮单击处理程序,它保存一个对象,然后呈现另一个控制器。我的问题是每次单击分配的内存都会增加。

  if (success) {
      ALRollsViewController *rollsController = [[UIStoryboard storyboardWithName:@"Entry" bundle:nil]instantiateViewControllerWithIdentifier:@"RollsController"];
      rollsController.camera= selectedCamera;
      [self presentViewController:rollsController
                         animated:YES
                       completion:nil];
  }

如果我使用dismissViewControllerAnimated 而不是presentViewController:rollsController 则没有堆积。我是否需要以某种方式释放实例化的控制器?

4

1 回答 1

0

你能指望什么?每次单击都会实例化一个新的 UIStoryboard 实例。这里的命名约定是,以对象名称(不带前缀的名称)开头的方法返回一个新创建的对象实例。

查看并比较NSArray arrayWith...NSString stringWith...

另外,您每次都需要一个视图控制器的实例来呈现。两个实例都被保留,直到视图控制器被解除。(我不是 100% 肯定 UIStoryboard 实例会保留那么长时间,但是新呈现的视图控制器会吃掉你的堆和一些堆栈。)

于 2014-05-20T21:13:58.617 回答