Приложение вылетает при запуске с <256 RAM iOS-устройствами

The Info

Я недавно запустил приложение в AppStore. После тысячи раз тестирования на симуляторе, сотни раз на реальных устройствах, мы наконец выпустили наше приложение.

The Problem

Обзоры начали появляться о сбоях приложения, когда пользователь запускает приложение. Мы поняли, чтоapp crashes on launch on iOS devices with less than (or equal to) 256 Mb of RAM, Следующие устройства - это устройства, поддерживаемые нашим приложением менее чем с 256:

iPod Touch 4G iPhone 3GS iPad 1

Приложение не всегда дает сбой. Иногда запускается нормально и работает плавно. В других случаях происходит сбой. Время от запуска (когда пользователь нажимает на значок) до сбоя обычно составляет две секунды, что означает, что система не выключает его.

Findings

При использовании инструментов для тестирования на определенных устройствах, я нахожу следующее:

There are no memory leaks (I'm using ARC), but there are memory warnings Items are being allocated like crazy. There are so many allocated items, and even though I'm using ARC it's as if ARC isn't doing what it's supposed to be doing

Because of what I see as "over-allocation", the result is:

This app takes (on average) 60 MB of Real Memory and 166 MB of Virtual. When the app launches the memory being used quickly increases until it reaches about 60 MB at which point the view has been loaded. Here is a snapshot of the Activity Monitor in Instruments: enter image description here

Я знаю, что эти цифры достаточно высоки (хотя CPU% там никогда не поднимается). Меня беспокоит, что ARC не работает должным образом, или более вероятный случай: я неправильно распределяю объекты.What could possibly be happening?

The Code and Warnings

В XCode есть только несколько предупреждений, ни одно из которых не относится к запуску приложения или файлам, связанным с запуском приложения. Я установил точки останова как в делегате приложения, так и в моемviewDidLoad способ проверить и увидеть, произошел ли там сбой - это не так.

More Background Info

Кроме того, Xcode никогда не генерирует никаких ошибок или сообщений в отладчике. В iTunes Connect также нет отчетов о сбоях, просто говорится: «Слишком мало отчетов было отправлено для отображения отчета». Я добавил отчеты о сбоях в свое приложение, но я не выпустил эту версию.

A Few Questions

Я начал использовать Obj-C, как только появился ARC, так что я новичок в работе с памятью, распределением и т. Д. (Это, вероятно, очевидно), но мне хотелось бы знать несколько вещей: Как я могу использовать@autoreleasepool уменьшить влияние на память? Что мне делать с предупреждениями памяти, что я пишу вdidRecieveMemoryWarning так как я использую ARC? Поможет ли удаление операторов NSLog ускорить процесс?

И самый важный вопрос:

Why does my app take up so much memory and how can I reduce my whopping 60 MB footprint?

Я очень признателен за любую помощь! Заранее спасибо!

EDIT: После тестирования на iPhone 4 (A4) мы заметили, что приложение не падает при запуске, тогда как на устройствах с менее чем 256 МБ ОЗУ это происходит.

Ответы на вопрос(1)

Ваш ответ на вопрос