я получаю SIGABRT на следующей строкеXCode: SIGABRT когда возникает неперехваченное исключение
int main(int argc, char *argv[])
{
@autoreleasepool
{
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
после пошагового кода на некоторое время я обнаружил, что SIGABRT происходит сразу после того, как
NSData *jsonObj = [NSJSONSerialization dataWithJSONObject:myDict
options:NSJSONWritingPrettyPrinted
error:nil];
и затем я понял, что использовал NSDate в одном из свойств dict, который по существу не может быть сериализован - и, смотря на выходную консоль, я также вижу строку:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (__NSDate)'
так что это понятно, я использовал там недействительный аргумент.
Но меня раздражает то, что XCode останавливается с сигналом: SIGABRT на возвращаемой строке UIApplicationMain вместо отображения недопустимого аргумента в строке, где я передал недопустимый аргумент.
В чем причина такого поведения?
Я использую XCode 5.0.2
Это не отвечает на ваш вопрос, но вы должны использовать '[NSJSONSerialization isValidJSONObject: myDict]', чтобы увидеть, можете ли вы преобразовать объект в JSON и только попробовать преобразовать, если это возвращает ДА. Исключения, как правило, не используются в качестве контроля потока в Objective-C. –