Приложение iOS вылетает при выходе, как отлаживать? - PullRequest
0 голосов
/ 29 июля 2011

Мое приложение вылетает при выходе из системы (не нажимая кнопку «домой» и переходя в фоновый режим), я думаю, проблема в том, что некоторые объекты, выпущенные в viewDidUnload, снова освобождаются в dealloc, но я не уверен.Поскольку мой код содержит более 10000 строк, есть ли какой-либо инструмент или метод, чтобы я мог быстро определить ошибку?Или это вызвано чем-то другим, а не одним объектом, выпущенным дважды?

Спасибо!

Вот скриншот левой панели:

When crashes

Кроме того, я попытался записать сообщения в viewDidUnload и dealloc, но не увидел ни одного сообщения об ошибке.

- (void)viewDidUnload {
    print "viewDidUnload 1";
    // actual method body
    print "viewDidUnload 2";
}

то же самое для dealloc.

Редактировать 2: Мое приложение использует Core Data, так что мне нужно что-то завершить вручную при выходе для Core Data (или он потерпит крах)?

Ответы [ 3 ]

3 голосов
/ 29 июля 2011

Протестируйте его на реальном устройстве - в случае сбоя приложения будет сгенерирован журнал сбоев.Он будет доступен в окне «Органайзер» кода XCode в разделе Журналы устройств , соответствующем вашему устройству.

Этот журнал даст вам стек вызовов сбоя, возможно, сузив места, которые вам нужнопоиск.

0 голосов
/ 02 октября 2012

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

0 голосов
/ 29 июля 2011

Трудно сказать, если вы не опубликовали код.

Есть ли у вас журналы сбоев?

Как вы выпускаете в viewDidUnload?

[_mayVar release];               // 1. on its own this will most likely cause a crash

[_mayVar release]; _myVar = nil; // 2. This is better as sets the pointer to nil

self.myVar = nil;                // 3. If you use properties this is easier than line 2
...