Борьба с управлением памятью iOS с помощью ARC
Я посмотрел видео сеанса 242 WWDC 2012 года об использовании инструментов для решения проблем с памятью и подумал, что создам очень простое приложение, чтобы опробовать то, что я узнал.
Мое приложение использует раскадровку с двумя viewControllers в нем. Первый viewController отображает UILabel и UIButton. Когда вы нажимаете кнопку, загружается второй viewController, и он также отображает UILabel и UIButton, которые при нажатии удаляют второй viewController, чтобы первый отображался снова. В инструментах я ожидал увидеть некоторую память, выделенную при добавлении второго viewController, и затем эту память для освобождения, чтобы я вернулся к первоначальному объему используемой памяти. Именно так работает демонстрация Apple в видео WWDC.
Вместо этого, когда я делаю снимки каждый раз, когда нажимаю кнопку отклонения и возвращаюсь к предыдущему viewController, я вижу, что использование памяти продолжает увеличиваться очень незначительно. Это никогда не ноль... это всегда идет вверх.
Он увеличивается только примерно на 500-700 байт каждый раз, что, как я понимаю, очень мало, но я хочу понять, почему он вообще увеличивается.
Единственный код, добавленный в мой первый viewController, - это единственный метод добавления второго контроллера представления, который называется VC2 в раскадровке.
- (IBAction)addVC2:(id)sender
{
ViewController2 *template = [self.storyboard instantiateViewControllerWithIdentifier:@"VC2"];
[template willMoveToParentViewController:self];
[self addChildViewController:template];
[self.view addSubview:template.view];
[template didMoveToParentViewController:self];
}
Точно так же второй viewController (VC2) имеет только один добавленный метод, который удаляет / удаляет его:
- (IBAction)dismiss:(id)sender
{
[self willMoveToParentViewController:nil];
[self.view removeFromSuperview];
[self removeFromParentViewController];
}
В какой-то момент я добавил dealloc в VC2, чтобы он вызывался и был.
У меня есть настройки распределения инструментов, как это:
Я не могу понять, почему использование памяти набирает обороты снова и снова. Что-то сохраняется каждый раз, когда я добавляю и удаляю второй контроллер вида, но я не могу найти его.