2009-12-04 3 views
5

У меня есть приложение для iphone. Кажется, все в порядке. Когда я подключаюсь к предоставленному iphone к Xcode и запускаю приложение, консольный журнал в окне Organizer всегда жалуется на ошибку сегментации при выходе из приложения с помощью домашнего ключа.Сигнал 11, ошибка сегментации на iphone Выход приложения

Кто-нибудь еще видел это, и есть ли у вас представление о том, что может быть проблемой? Я использую поток для загрузки веб-страниц на заднем плане, но я останавливаю поток при выходе.

Мое приложение действительно сохраняет некоторую постоянную информацию. Когда я использую функцию построения и анализа, я получаю несколько потенциальных потенциальных утечек памяти, но в каждом случае я выделяю объект и сохраняю его в массиве.

Любые идеи, или это нормально?

+1

NSZombieEnabled действительно помог мне найти катастрофу, которую я раньше не мог найти. – BastiBen

ответ

7

Попробуйте использовать приложение NSZombieEnabled. Это скажет вам, если вы закончите выпуск любого объекта. Чтобы включить зомби сделать следующее:

  1. Choose Project > Edit Active Executable to open the executable Info window.
  2. Click Arguments.
  3. Click the add (+) button in the “Variables to be set in the environment” section.
  4. Enter NSZombieEnabled in the Name column and YES in the Value column.
  5. Make sure that the checkmark forthe NSZombieEnabled entry is selected.
+0

С NSZombieEnabled, где я должен установить точку останова, чтобы поймать проблему? С этой настройкой программа меня рано заканчивает с сообщением: CFString autorelease: сообщение отправлено на освобожденный экземпляр. Я хотел бы сломать, когда сообщение отправлено на освобожденную строку, поэтому я могу выяснить, какую строку. Thanks, Gerry – Gerry

+0

С включенными Zombies. Мой код неисправен внутри строки [parser parse] из приведенного ниже кода. Этот бит происходит на NSThread. Любые идеи относительно того, что вызовет проблему. Моя обычная рутина не попала. Спасибо, Gerry (код в следующий комментарий) – Gerry

+0

NSURL * nsurl = [NSURL URLWithString: query]; \t NSURLRequest * запрос = [запрос NSURLRequestWithURL: nsurl]; \t \t data = [NSURLConnection sendSynchronousRequest: request returnResponse: & response error: & error]; \t \t NSXMLParser * parser = [[NSXMLParser alloc] initWithData: data]; \t [парсерный наборDelegate: self]; \t [парсерный наборShouldProcessNamespaces: NO]; \t [парсерный наборShouldReportNamespacePrefixes: NO]; \t [парсерный наборShouldResolveExternalEntities: NO]; \t errorStr = nil; \t if ([parser parse] == YES) // материал – Gerry

0

После выхода приложение может перезапустить объект, попробуйте сбросить каждый объект перед его выпуском или выполнить некоторую отладку в методе dealloc.

0

Возможно, вы освобождаете какой-то объект больше времени, чем его счет. Прокомментируйте -release вызовы в ваших методах dealloc (или в другом месте), пока не найдете виновника.

Затем расторгните этот вызов и посмотрите в другом месте вашего кода, где вы пытаетесь перевыпустить этот объект.

При использовании удобных методов, например, (например, [NSString stringWithFormat:@"..."]), в отличие от alloc-init методов (например, [[NSString alloc] initWithFormat:@"..."]) является autoreleased результирующего объекта удобства и не должно быть освобождено вручную.

0

Моя проблема была uididfaker и locationholic из Cydia, и после удаления их Xcode работать на моем Iphone просто отлично.

Смежные вопросы