Вы правильно внедрили демо, не считая одной части. Предполагается, что память освобождается на линии
[visiblePages minusSet:recycledPages];
Но я вижу, что вы храните ваши изображения в массиве. Ваши изображения хранятся в этом массиве и не освобождаются, поэтому они занимают память.
Цель этого кода - лениво загружать изображения по мере необходимости. Вы публикуете не там, где инициализируете массив изображений, а из того, что у вас есть, он выглядит предварительно заполненным изображениями.
Вместо этого вам следует сохранить пути к изображениям в массиве (все, что вы сделали с ним до сих пор, будет работать), а затем изменить следующий метод:
- (UIImage *)imageAtIndex:(NSUInteger)index {
NSSting * imagePath = [images objectAtIndex:index];
UIImage * image = [UIImage imageWithContentsOfFile:imagePath];
return image;
}
Или что-то на этот счет. Могут быть более эффективные способы загрузки изображения в зависимости от того, откуда оно поступает, но приведенное выше должно остановить сбой.
Если ваши изображения загружаются очень долго и блокируют ваш интерфейс, вы можете сделать несколько вещей. Вы можете разгрузить загрузку изображения в фоновый поток, используя GCD, или вы можете продолжать смотреть это видео WWDC и реализовать CATiledLayer
для изображения высокого разрешения и поместить его поверх изображения низкого разрешения. Изображение будет выглядеть очень быстрым.