Загрузка полноэкранного изображения Retina на iPad вызывает массовый всплеск 10 МБ

Мое приложение работает в инструментах, занимая в среднем около 700 Кбайт Live Bytes во время работы. Тем не менее, каждый раз, когда он загружает новый полноэкранный образ, распределения памяти прыгают примерно на 10 МБ на секунду, а затем восстанавливаются до нормального уровня 700 КБ.

Это нормально в начале, но как только это произошло несколько раз, я получаю предупреждения о памяти, и приложение завершает работу, даже если суммарные байты Live стабилизируются хорошо под отметкой 1 МБ.

Я создал тестовый проект, чтобы понять, почему это происходит. Это приложение с одним представлением, содержащее только следующий код в контроллере просмотра:

- (void)viewDidLoad { [super viewDidLoad]; NSString *imgFile = [[NSBundle mainBundle] pathForResource:@"00-bg" ofType:@"png"]; UIImage *img = [[UIImage alloc] initWithContentsOfFile:imgFile]; UIImageView *backgroundImageView = [[UIImageView alloc] initWithImage:img]; [img release]; [self.view addSubview:backgroundImageView]; [backgroundImageView release]; } 

Выход из инструментов (Утечки) выглядит так: выход из инструментов

Я пробовал как ARC, так и не ARC, и единственное различие – это длина спайка (ARC, похоже, держится на памяти дольше).

Я также пробовал и UIImage imageNamed: и initWithContentsOfFile: но результаты те же.

Почему этот шип происходит? И есть ли что-нибудь, что я могу сделать, чтобы избежать этого?

Чтобы отображать их на экране, iOS должен распаковать ваши изображения, и именно там исходит ваш шип.

2048 * 1536 = 3145728 пикселей (точек). В 4 байт на пиксель – 12 МБ.

  • Странное поведение с CGContext - iOS
  • «CGBitmapContextCreate: недопустимые байты данных / строка» ... почему фильтрация камеры + испортила мою процедуру обрезки изображения?
  • Значения PFObject могут не иметь класса: UIImage
  • Длина NSData изображения, сжатого с помощью UIImageJPEGRepresentation ()
  • Изменение изображения UITabBarItem
  • Установить эффект размытия в изображении в области точки касания в iOS
  • Проблемы с обрезкой UIImage в Swift
  • Производительность пользовательского маркера iOS, сбой с результатом "((null)) был ложным: достигнув максимального количества текстурных атласов, не может выделить больше."
  • Нахождение самой большой центрированной площади от пейзажа или портрета UIImage и масштабирования его до размера
  • Как работает UIEdgeInsetsMake?
  • Округление UIImage и добавление границы
  • Interesting Posts

    как настроить вибрацию с помощью UILocalNotification, а также звук не будет только вибрировать iphone

    Как избежать загрузки данных приложений с помощью xcode

    Установка IPA с помощью iTunes 11

    Странное поведение ARC в не оптимизированном и оптимизированном двоичном

    Странное поведение UIView при изменении Y-начала, когда клавиатура видна

    Функция Swift, которая принимает массив, дает ошибку: '@lvalue $ T24' не идентичен 'CGFloat'

    iOS: 2 кнопки называют один и тот же контроллер. Как найти, какой из них был нажат?

    Как я запрещаю WKWebView представить камеру модальной, если пользователь отказал в доступе к камере?

    Процедура повторного подключения в приложении IOS BLE

    TestFlight iOS 8 – Ошибка: для запроса на установку было указано неверное приложение

    Темы NSURLSession: отслеживание загрузки нескольких фонограмм

    Где используется значок приложения 1024×1024?

    Как я могу предотвратить сирот в ярлыке быстрым?

    Почему создание большого количества SKNodes занимает так много времени

    Пользовательский MKAnnotationView с рамкой, значком и изображением

    Давайте будем гением компьютера.