У меня ошибка в main.m "Тема 1: сигнал SIGABRT" Как я могу это исправить? - PullRequest
4 голосов
/ 20 марта 2012

Мой код в файле main.m выглядит следующим образом. Я совсем не изменил его с тех пор, как начал программировать это приложение.

#import <UIKit/UIKit.h>

#import "rickAppDelegate.h"

int main(int argc, char *argv[])
{
    @autoreleasepool {
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([rickAppDelegate class]));
    }

}

Я получаю ошибку SIGABRT в строке return UIApplicationMain. Моя программа - это приложение, которое отображает красную кнопку и при нажатии на нее воспроизводит видео. Эта ошибка появилась после того, как я реализовал iAds, используя этот учебник: http://www.ioslearner.com/implement-iads-tutorial-iphone-ipad-sdk/

Сначала это работало, но потом я начал получать ошибку SIGABRT. Я сделал много поисков и не могу понять, как это исправить. На всех веб-сайтах кто-то спрашивает об этом, а затем выясняет это самостоятельно или с помощью очень расплывчатого ответа, который я не могу понять. Пожалуйста помоги! Если вы ответите, не могли бы вы конкретно указать, что я должен делать. При необходимости я могу опубликовать весь свой код. Заранее спасибо!

Ответы [ 3 ]

16 голосов
/ 20 марта 2012

Когда вы получаете SIGABRT в этой строке main, это означает, что ваша программа вызвала исключение. Трассировка стека показывает, где исключение поймано , а не где поднято . Обычно это не помогает.

Чтобы устранить проблему, вы можете сделать две вещи:

  1. Нажмите кнопку «Продолжить выполнение программы» на панели управления отладчиком или выберите «Программа»> «Отладка»> «Продолжить» в строке меню. Это позволит программе продолжить процесс создания исключений. Он выведет на консоль отладчика сообщение, которое поможет вам понять, в чем дело. (Возможно, вам придется продолжить выполнение несколько раз, прежде чем он действительно напечатает сообщения.) Внимательно прочитайте сообщения! Обычно они содержат полезную информацию.

  2. Установить точку останова исключения. Это заставит Xcode остановить вашу программу в точке, где исключение возбуждено , так что вы можете увидеть код и трассировку стека. это вызывает проблему.

4 голосов
/ 14 апреля 2018

SIGABRT (Прерывание сигнала) указывает, что сбой приложения из-за невозможности доступа к чему-то, что является нулевым или не существует, обычно, по моему опыту, это сломанные розетки.

  1. В раскадровке проверьте все свои розетки в каждом контроллере представления.

enter image description here

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

enter image description here

  1. Проверьте идентификатор раскадровки в Инспекторе идентичности, если имена верны.

  2. Проверьте наличие точек останова в левой части кода. enter image description here

Надеюсь, это кому-нибудь поможет!

0 голосов
/ 20 марта 2012

Вы должны отладить ваше приложение в файле UIVIewController (тот экран или представление, где приложение падает). Обычно эта ошибка появляется, когда:

1) ваш xib не подходит для ваших торговых точек. Например, обычный элемент управления UIView и UITableView вместо UITableViewController.

2) в вашей программе вы хотите использовать несуществующий объект. Например: если количество элементов массива 3, но вы хотите получить 4-й элемент.

...