Как правильно остановить текущий проект xCode?

Это может показаться глупым вопросом, однако, поскольку iOS 6 viewDidUnload больше не вызывается, меня интересует, как правильно завершить приложение iOS, которое в настоящее время отлаживается с помощью xCode на устройстве разработки. Достаточно ли нажать кнопку «Стоп» внизу?

введите здесь описание изображения

Что именно происходит, когда я нажимаю эту кнопку? Является ли это эквивалентом отправки приложению стоп-сигнала, который немедленно завершает работу приложения? Вызывается ли какой-либо код Dealloc? Причина, по которой я спрашиваю, заключается в том, что после повторной отладки с запуском/остановкой я столкнулся с проблемой, когда кажется, что у моего приложения проблемы со случайной памятью. (Утечек при профилировании не обнаружено).

Ваши мысли ценятся!


person Alex Stone    schedule 02.04.2013    source источник


Ответы (2)


Нажатие «Стоп» мгновенно убивает приложение. Ни Dealloc, ни другой код не вызывается (в частности, ни один из методов делегата вашего приложения, которые могут сохранять данные), процесс просто завершается. Затем вся память, используемая процессом, освобождается, и когда вы начинаете снова, вы начинаете с нуля.

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

Лучший способ смоделировать действия пользователя — нажать кнопку «Домой», а затем затем остановить процесс. Это не завершает работу вашего приложения, но вы все равно должны иметь дело со всем необходимым при входе в фоновый режим.

person jrturton    schedule 02.04.2013
comment
Проблема описана здесь. stackoverflow.com/questions/15673536/ То, что вы сказали о памяти, заставляет меня думать, что это также может быть вызвано чем-то в основных данных, пытающимся восстановить себя после внезапного завершения (Я использую RestKit) - person Alex Stone; 02.04.2013
comment
По моему опыту, между сессиями Core Data было очень сложно. Если вы добавляете строку или объект в таблицу, обычно необходимо либо удалить приложение в симуляторе, либо выполнить iOS Simulator › Reset Content and Settings на панели приложения. - person Heckman; 02.04.2013
comment
Вы можете просто удалить постоянное хранилище, когда получите сообщение об ошибке при настройке. Экономит много времени и, вероятно, в любом случае это то, что вам нужно в производственном коде. - person jrturton; 03.04.2013

ApplicationWillTerminate вызывается после корректного закрытия приложения. Если вы нажмете кнопку остановки, ваше приложение будет уничтожено, и в этом случае вы можете не отслеживать вызовы методов. Поскольку нет методов viewDidUnload или dealloc для UIViewController, вы можете определить свой собственный метод dealloc без вызова супер dealloc.

Вы можете ознакомиться с Жизненный цикл приложения< /а>. Это может ответить на множество вопросов.

person nsgulliver    schedule 02.04.2013