Я работаю над приложением слайд-шоу в стиле киоска. У меня есть UIScrollView
, который показывает слайды, и фабричный класс, который генерирует слайды. Сами «слайды» являются подклассами UIViewController
, которые загружаются из файлов XIB и настраиваются заводским классом. В моем главном контроллере я настроил вид прокрутки и запустил таймер. Таймер вызывает метод «перезагрузки» каждые N секунд, который обрабатывает перезагрузку и вызывает фабричный класс.
Метод, который использует класс фабрики, выглядит примерно так:
- (SlideViewController *)slideFromManagedObject:(Slide *)managedObject{
NSInteger slideType = [managedObject slideType];
switch(slideType){
case kSlideTypeA:
{
//
// configure arguments here
//
return [[SlideViewController alloc] initWithArgument:argument] autorelease];
break;
}
//
// More types here...
//
default:
break;
}
}
Я еще не дошел до определения всех своих дел, но заполненные, кажется, вызывают скачки в использовании памяти . Если я добавлю return [[[UIViewController alloc] init] autorelease];
прямо перед переключателем / регистром, я не получу видимого представления, как ожидалось, но я также не вижу увеличения памяти. Я не уверен, но я подозреваю, что это "блоки C", в которые я оборачиваю свой код генерации слайдов.
Некоторые вещи на заметку:
Когда приложение запускается, я вижу плато памяти примерно с 400 килобайт, примерно вдвое больше. Затем, когда слайды выполняются, любой из слайдов, код генерации которых содержится в фигурных скобках, вызывается, плато памяти снова вверх.
Такое поведение, кажется, происходит только один раз за запуск - когда приложение проходит по всем слайдам, плато to_not_ повторяется снова. Однако , если приложение фоновое и затем перезапущено, плато возникает снова, потребляя даже больше памяти.
Когда я оставил приложение для работы в течение ночи, в течение примерно 10 часов и сорока минут, использование памяти медленно возросло с примерно 1,44 мегабайта до где-то ближе к 1,57 мегабайта. Я подозреваю, что есть / были некоторые другие утечки, которые, возможно, были исправлены моей настройкой, но основной скачок с 800 килобайт до 1,4-1,5 мегабайта все еще остается проблемой.
Прибор не сообщает об утечках, но плато касается меня.
Что может быть причиной увеличения памяти?
EDIT:
Так что я не думаю, что это блоки, так как использование if / else делает то же самое.
Вот скриншот запущенного инструмента Allocations:
Где можно придерживаться этих взглядов?