Я столкнулся с той же проблемой - приложение отлично работало на симуляторе и устройстве в режиме отладки, но ни в режиме выпуска (оно установило бы, а просто отображал заставку)
- Xcode 4.3.2
- iOS Deployment Target 4.3
Я продолжал видеть ответы на StackOverflow, в которых говорилось, что это проблема управления памятью, но это не имело никакого смысла для меня, так как отладочная версия работала отличнонормально при загрузке на мой iPhone 4S.Я также проверил настройки сборки, чтобы увидеть, чем отличаются эти два режима, и пропустил одно различие, которое имело значение в конце - оптимизация компилятора.
В настройках сборки -> под Apple LLVM compiler 3.1 генерация кода ->Уровень оптимизации, измените настройку выпуска со значения по умолчанию Самый быстрый, самый маленький [-Os] до Нет [-O0] .Исправлена моя проблема.
Обнаружил, что решение в этом сообщении в блоге: http://www.mindjuice.net/2011/11/30/how-to-fix-an-app-that-crashes-in-release-but-not-debug/.
Документация Apple помогает, но не объясняет, почему делать толькообратное исправляет вещи:
Оптимизация кода любого вида приводит к более медленному времени сборки из-за дополнительной работы, вовлеченной в процесс оптимизации.Если ваш код меняется, как это происходит во время цикла разработки, вам не нужно включать оптимизацию.По мере того, как вы приближаетесь к концу своего цикла разработки, конфигурация сборки выпуска может дать вам представление о размере вашего готового продукта, поэтому уместен вариант «Самый быстрый, самый маленький».
Нет: Компилятор не пытается оптимизировать код.Используйте эту опцию во время разработки, когда вы сосредоточены на решении логических ошибок и нуждаетесь в быстром времени компиляции.Не используйте эту опцию для доставки вашего исполняемого файла.
Самый быстрый, самый маленький : компилятор выполняет все оптимизации, которые обычно не увеличивают размер кода.Это предпочтительный вариант для доставки кода, поскольку он дает вашему исполняемому файлу меньший объем памяти.