Прежде iOS4.0 нажатие кнопки "Домой" на iPhone выходит из приложения, и Apple имела в их руководстве, что программно выход из приложения не был принят.
теперь все изменилось в iOS4.0, нажимание кнопки "Домой" помещает Ваше приложение в приостановленный режим (многозадачность).. и я думаю, что должен быть ясный способ для пользователя выйти из приложения, как кнопка выхода.
это теперь в порядке с яблоком? и как это может быть сделано?
Нет, все равно не следует этого делать.
У вас есть обработчики для разных этапов, так что вы должны это делать. Вручную выходить нет смысла. Если вы перезапустите приложение, в идеале оно начнется с того места, где вы остановились, так что это либо возобновление, либо запуск и загрузка старого состояния.
Нет причин для выхода.
Редактировать
Поскольку это продолжает появляться снова: Рекомендации по человеческому интерфейсу iOS говорят: «Не выходите программно». И мы видели много отчетов о приложениях, в которых в прошлом были вызовы exit ().
Выход вместо приостановки путем установки соответствующего ключа в файле Info.plist, конечно, прекрасен - но это не специальная кнопка пользовательского интерфейса, а просто реализация выхода из программы с помощью кнопки «Домой» для конкретного приложения.
Вы можете установить ключ Info.plist UIApplicationExitsOnSuspend, чтобы гарантировать полное завершение работы приложения.
У меня была реальная проблема с этим. Есть большой смысл выходить из программы вручную или программно.
В предыдущей версии iPhone OS мое приложение при завершении работы записывало свое состояние (первое использование, второе и т.д.) в plist. Когда пользователь возвращался, он хотел показать разные вещи, читая plist. Кроме того, оно хотело показывать первый экран каждый раз, когда пользователь возвращался после выхода.
Когда приложение приостанавливается в фоновом режиме в iPhone OS4, оно возвращается туда, где остановилось (т.е. показывает тот же экран, на котором находился пользователь), и никогда не меняет своего состояния, потому что applicationWillTerminate теперь никогда не вызывается.
Поскольку именно такое поведение желательно в большинстве случаев (чтобы приложение продолжало работать, когда вы временно выходите из него), должен быть способ выбора, т.е. приостановить его или выйти.
Поскольку установка UIApplicationExitsOnSuspend=YES дает только один способ (т.е. приложение всегда завершается при нажатии HOME), это не то решение, которое я ищу.
Я хочу, чтобы приложение знало, когда вся цепочка шагов завершена, а не просто последовательность была приостановлена, и выходило само в нужное время.
Для этого я должен иметь возможность завершить работу приложения и записать его состояние после того, как оно выполнило всю последовательность действий. В других случаях я просто хочу, чтобы приложение было приостановлено.
Если дважды нажать кнопку HOME, можно увидеть приостановленные приложения. Я могу удалить (выйти) из приложения, нажав на него дольше и коснувшись символа (-), который появляется, но это не так интуитивно понятно для пользователей и слишком много шагов.
Другой вариант - иметь кнопку "Выход" в качестве одной из вкладок Nav Tabs в моем приложении, но это некрасиво. На данный момент единственным вариантом кажется установка UIApplicationExitsOnSuspend=YES.