Наращивание памяти с presentViewController

У меня есть обработчик нажатия кнопки, который сохраняет объект, а затем представляет другой контроллер. Моя проблема в том, что с каждым кликом выделяемая память увеличивается.

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

Если я использую dismissViewControllerAnimated в отличие от нынешнего ViewController:rollsController, нет наращивания. Нужно ли как-то освобождать созданный экземпляр контроллера?

1 ответ

Решение

Что вы ожидаете? Каждый щелчок запускает новый экземпляр UIStoryboard. Соглашение об именах здесь заключается в том, что метод, начинающийся с имени объекта (имя без префиксов), возвращает вновь созданный экземпляр объекта.

Смотрите и сравнивайте с NSArray arrayWith... или же NSString stringWith...

Кроме того, вам нужен экземпляр контроллера представления каждый раз, когда он будет представлен. Оба экземпляра сохраняются до тех пор, пока контроллер представления не будет удален. (Я не на 100% уверен в том, что экземпляр UIStoryboard будет храниться так долго, но недавно представленный контроллер представления поглотит вашу кучу и немного стека.)

Другие вопросы по тегам