Подтвердить что ты не робот

(null) libС++ abi.dylib: terminate называется throwing exception

Я использую Xcode 4.5PR и iOS 6beta 2.

Я не менял никаких кодов, мое приложение выдает исключение, указанное в заголовке.

Я использовал Debug Window, функция которого вызвала это исключение, но показывала

0x38dda960:  push   {r4, r5, r6, r7, lr}

Как я могу найти проблему? Как я могу это исправить?

4b9b3361

Ответ 1

Если вы ничего не изменили, это может просто быть связано с бета-версией iOS 6, которая в настоящее время стоит.

Однако для тех, кто искал эту ошибку, вот несколько общих советов:

1) Это может быть симулятор, который вы выбрали для создания того же кода для:

Если вы не изменили какой-либо исходный код, убедитесь, что ваша схема все еще указывает на тот же симулятор, над которым он работал в последний раз. (Например, пытаясь представить modal view controller (presentModalViewController:), но забывая условно использовать popover для iPad, может вызвать это.)

2) Если трассировка стека и консоль бесполезны:

Иногда в стеке есть только main и UIApplicationMain, что затрудняет отслеживание того, что пошло не так в вашем собственном источнике. Вероятно, это признак того, что что-то не работает в методе собственной структуры, который вы вызываете или вызываете.

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

Ответ 2

Установите точку останова на исключениях С++, чтобы найти, где она была выбрана.

enter image description here

Ответ 3

Убедитесь, что вы используете версию предварительного просмотра (4.5) для разработчиков и не по привычке открываете версию выпуска (4.3.3) и определенно имеете бета-версию iOS если вы не обновили параметры проекта, вы не сможете запустить приложение на бета-версии iOS 6 после обновления параметров проекта до iOS 6, приложение больше не будет работать на устройствах iOS 5.x.x больше на другом.

Ответ 4

Это происходит здесь, когда я устанавливаю ограничение на объект i.s.o. присваивая его супервину

Ответ 5

Причина возникновения этой ошибки...

У меня была эта ошибка после изменения имени некоторых переменных iboutlet в моих файлах .h и .m, но не в ссылках на раскадровку для этих переменных. После повторных ссылок все снова работало нормально. Надеюсь, это поможет некоторым из вас.

Ответ 6

Иногда это может произойти, если вы просто пропускаете библиотеку - я делал быстрое примерное приложение с MKMapView и имел эту ошибку, прежде чем добавить MapKit.framework в свой проект.

Ответ 7

Некоторая временная проблема возникает, когда пользователь импортирует любую фреймворк, а также импортирует эту фреймворк в файл .pch в папке ресурсов приложения. Надеюсь, это поможет некоторым из вас.

Ответ 8

Это происходило со мной и уходило, когда я установил -ObjC в "Other Linker Flags"

Ответ 9

Это исключение может возникать по целому ряду причин. Лучший способ найти точную основную причину - посмотреть console. Там вы найдете текст следующим образом:

*** lorem ipsum lorem ipsum lorem ipsum
*** First throw call stack: (0x1d16012 0x16c3e7e 0xa4ef96 0x607704 0x6079a2 0x606876 0x617cb5 0x618beb 0x60a698 0x2b81df9 0x2b81ad0 0x1c8bbf5 0x1c8b962 0x1cbcbb6 0x1cbbf44 0x1cbbe1b 0x60617a 0x607ffc 0x1d1d 0x1c45) libc++abi.dylib: terminate called throwing an exception

Здесь текст lorem ipsum до First throw call stack точно определит, почему возникает исключение. Исправьте эту проблему, и вам хорошо идти.

Ответ 10

Эта ошибка обычно наблюдается, когда вы вручную удаляете свою раскадровку из своего проекта и переставляете свой контроллер просмотра, который будет использоваться без раскадровки. Убедитесь, что ваш контроллер просмотра добавлен в контроллер корневого представления вашего окна в AppDelegate и что контроллер представления инициализирован без имени ниба (поскольку вы удалили бы это при удалении раскадровки) - И САМ ВАЖНО удалите строки из вашего pList файл, который сообщает приложению, что файл раскадровки должен существовать, например, "Основное имя файла раскадровки (iPad)" или "Основное базовое имя файла раскадровки (iPhone)". Как только они исчезнут, ваше приложение перестанет искать раскадровку, и вы будете золотыми, как золотистый ретривер!