2015-06-13 4 views
1

В моем приложении iOS весь пользовательский интерфейс закодирован программно, что означает отсутствие xibs или раскадровки. Все работает хорошо, пока я не добавлю еще один контроллер вида через UINavigationController.iOS UI вызывает сбои после нажатия/вызова второго контроллера представления

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

Любая идея, что может быть причиной этого?

UPDATE: Скриншот исключения exception

+0

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

+0

@PetahChristian: Да; особых сообщений об ошибках нет, и я не знаю, как их отслеживать, как вы предложили. – iSofia

ответ

1

Там в журнал аварии, которая генерируется, когда сбой приложения. Все сообщения, а также обратная трассировка стека.

Вы можете просмотреть журналы сбоев устройства, подключив их к вашему Mac, затем откройте окно «Устройства» и просмотрите журналы устройств.

Но проще всего отладить это в Xcode, подключив свое устройство, а затем создав и запустив его в Xcode на устройстве.

Когда приложение выходит из строя (из-за какого-либо исключения), Xcode может его поймать, и управление будет передано отладчику.

Вы можете добавить Исключение точки останова в Xcode, чтобы остановить приложение, как только произойдет исключение.

Чтобы добавить контрольную точку исключения, переключитесь на Навигатор точек останова. Нажмите маленькую кнопку + в нижней части панели и выберите Добавить точку останова исключения.

После сбоя приложения вы можете посмотреть на обратную трассировку стека. Первые несколько элементов в стеке вызовов, скорее всего, будут в коде Apple, но немного дальше назад будет вызов от вашего контроллера представления, показывая линию, которая выявила проблему.

Что касается конкретно неправильного, это может быть любое количество вещей. Мы не можем специально помочь, если вы не разделяете код, который показывает свойства для этих объектов и где они (де) выделены.

+0

Спасибо за ваш ответ. Я добавил контрольную точку исключения, но я не могу найти стек backtrace. Это листинг сборки с различными потоками? – iSofia

+0

Да. Код сборки - это SDK от Apple. Если вы посмотрите на список вызовов для потока, который разбился, вы увидите цифры, начиная с 0. Работайте над списком, пока не получите свой собственный код. –

+0

Спасибо. Думаю, я нашел его, хотя не так много, чтобы идти дальше (скриншот добавлен к вопросу) _. Нет способа узнать, что вызвало это? – iSofia

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