我有一个按钮单击处理程序,用于保存对象,然后显示另一个控制器。我的问题是,每次点击,分配的内存都会增加。
if (success) {
ALRollsViewController *rollsController = [[UIStoryboard storyboardWithName:@"Entry" bundle:nil]instantiateViewControllerWithIdentifier:@"RollsController"];
rollsController.camera= selectedCamera;
[self presentViewController:rollsController
animated:YES
completion:nil];
}
如果我使用dismissViewControllerAnimated而不是presentViewController:rollsController则没有累积。我是否需要以某种方式释放实例化的控制器?
答案 0 :(得分:0)
你期待什么? 每次单击都会立即显示UIStoryboard的新实例。这里的命名约定是,以对象名称开头的方法(没有前缀的名称)返回新创建的对象实例。
查看并与NSArray arrayWith...
或NSString stringWith...
另外,每次要呈现时都需要一个视图控制器的实例。 两个实例都保留,直到视图控制器被解除。 (我不是100%肯定UIStoryboard实例要保持这么久,但是新呈现的视图控制器会占用你的堆和你的堆栈。)