приложение для iPhone, выполняющее Средство моделирования 4.0 полученных Sigkill

Я просто получил iPhone SDK 4, и я пытаюсь бросить разрабатывать приложение, я продолжал работать прежде. Таким образом, я реализовал обоих -(void)applicationDidEnterBackground:(UIApplication *)application и - (void)applicationWillTerminate:(UIApplication *)application

Когда я нажимаю кнопку "Домой" в средстве моделирования 4.0, это, кажется, работает хорошо. Вызовы приложения -(void)applicationDidEnterBackground:(UIApplication *)application и вводит фоновое состояние..

Однако я затем дважды щелкаю по кнопке "Домой", чтобы выставить приложение, работающее в фоновом режиме и удержать его, чтобы показать знак "минус" в или выйти. Когда я нажимаю знак "минус", говорит отладчик

Программа получила сигнал: "SIGKILL"

кроме того, - (void)applicationWillTerminate:(UIApplication *)application никогда не называется. Я пропускаю что-то, что я должен сделать, чтобы это работало над OS4? Или по крайней мере может кто-то указывать на меня на способ отладить SIGKILL.Спасибо.

8
задан NickDK 23 June 2010 в 03:09
поделиться

2 ответа

-applicationWillTerminate: вызывается только в том случае, если ваше приложение находится в рабочем состоянии, когда его просят завершить работу. Если он уже находится в приостановленном состоянии (как у вас здесь), система просто отправляет сигнал уничтожения приложению. Это происходит, когда пользователь нажимает красные кнопки с минусом, чтобы закрыть приложение вручную, а также когда система решает отказаться от приложения, чтобы освободить память для приложения переднего плана.

Если ваше приложение работает в фоновом режиме (например, воспроизводит музыку или выполняет некоторые фоновые задачи) и пользователь вручную завершает работу приложения, нажимая кнопку «минус», только тогда вы действительно получите -applicationWillTerminate: сообщение. Следовательно, вы должны сохранить все свое состояние / etc. перед возвратом из -applicationDidEnterBackground: .

13
ответ дан 5 December 2019 в 11:22
поделиться

Ожидается, что полоса многозадачности «красная кнопка закрытия» эквивалентна принудительному завершению работы приложения в Mac OS X. Это задокументированное поведение. Apple ожидает, что обычные пользователи iOS 4 будут просто запускать / использовать / отключать приложения, которые им не нужно думать в терминах завершения процессов или чего-то еще. Система справится с этим.

Просто убедитесь, что сохранили все важные данные в application: willResignActive: или applicationWillEnterBackground. Потому что после этого вы можете погибнуть, когда из-за нехватки памяти система будет очищаться ... Snow Leopard представил аналогичное поведение для приложений, которые используют ключ NSSupportsSuddenTermination в своем Info.plist. Приложение в основном сообщает системе, что оно периодически сохраняет свои данные по крупицам, так что, когда оно переходит в фоновый режим, делать нечего или очень мало. В отличие от больших монолитных приложений, настольные приложения ...

2
ответ дан 5 December 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: