Каждый раз, когда я поворачиваю страницу в своем приложении, я удаляю и отпускаю предыдущий viewController, но по какой-то причине он все еще находится в памяти. Я знаю это, потому что после использования приложения какое-то время я получаю 47 предупреждений памяти - по одному от каждого контроллера представления - если бы я открыл 47 страниц до появления предупреждения о памяти. Я получаю 60 предупреждений памяти, если я открыл 60 страниц до того, как появилось предупреждение о наличии. И так далее ...ViewController не освобождается
Это код, который работает с одной страницы на другую:
UIViewController *nextController;
Class nextClass = [pageClasses objectAtIndex:(currentPageIndex - 1)];
nextController = [[nextClass alloc] initWithNibName:[pageNibs objectAtIndex:(currentPageIndex - 1)] bundle:nil];
[nextController performSelector:@selector(setDelegate:) withObject:self];
[currentPageController.view removeFromSuperview];
[self.view addSubview:nextController.view];
[currentPageController release];
currentPageController = nextController;
[currentPageController retain];
[nextController release];
Может кто-нибудь точку на любые вопросы, которые они видят?
Большое спасибо!
Это не прямой ответ на ваш вопрос, но если я правильно понимаю ваше приложение, вам все равно не нужны все эти новые контроллеры. Если вы просматриваете что-то, и только 2 страницы на самом деле видны сразу (текущая и часть следующего или предыдущего, пока текущий не исчезнет из вида), вы можете просто повторно использовать два контроллера, динамически обновляя содержимое вне экрана один раз перед его появлением. Перерабатывайте те же два снова и снова. Вам даже не нужно путаться, освобождая их до завершения действия или приложения. –
Спасибо, Мэтью. На каждой странице есть кнопка в другом месте, что приведет вас к следующей странице. Было бы сложно разместить более 50 кнопок в Interface Builder и включить или отключить их в зависимости от того, на какой странице был включен пользователь. Полагаю, я мог бы разместить кнопки в IB, записывать x/y и ширину/высоту кнопок, удалять их, а затем программно добавлять и удалять соответствующие кнопки на основе страницы, на которой пользователь включен. Я могу закончить переписывание кода таким образом, если все остальное не получится ... – RanLearns
Если вы можете просто изменить положение (и внешний вид, если необходимо) кнопок, то вы снова сможете устранить создание и отпустить кнопку после кнопки , –