В моем приложении диаграмму в одном представлении можно перетащить во второе представление, чтобы новый график заменил второй вид (например, эффект копирования/вставки с функцией перетаскивания). Приложение работает, если протокол делегата вынимается, так что второе представление обрабатывает изменение самой функции. При добавлении протокол, приложение падает в главном файле вПриложение сбой в основном после добавления протокола делегата; код ошибки
return UIApplicationMain(argc, argv, nil, NSStringFromClass([Load_CreatorAppDelegate class]));.
Существует не ошибка выхода, кроме стандартных (lldb). Даже когда я вывожу вызов делегату (сохраняя код), приложение вылетает. Я знаю, что он должен быть связан с кодом протокола, хотя, потому что он работал хорошо до этого.
Вот часть кода для второй точки зрения (BeamView):
[self drawSupportsAtLeftPoint:self.beamBottomLeft rightPoint:self.beamBottomRight inContext:context :leftPin :rightPin];
BOOL pt = NO;
if (self.tempLoad) {
//self.loadGraph = [self.dataSource changeToTempLoad:self]; NOTE #1
//if (self.tempPtLoad.x != 0 || self.tempPtLoad.y != 0) pt = YES;
pt = [self changeLoad];
[self drawLoadWithFunction:self.loadGraph inContext:context fromPoint:self.beamTopLeft toPoint:self.beamTopRight withAlpha:0.3 isPointLoad:pt inBlack:YES];
}
else {
self.loadGraph = ^(int x) {return x/15;};
[self drawLoadWithFunction:self.loadGraph inContext:context fromPoint:self.beamTopLeft toPoint:self.beamTopRight withAlpha:1 isPointLoad:pt inBlack:NO];
}
self.tempLoad = NO;
Примечание # 1: Эти строки, которые закомментированы являются те, которые требуют от делегата. Эти два метода и их реализация являются единственными изменениями, которые я сделал.
Я полностью смущен, любая помощь будет принята с благодарностью. Каковы возможные причины, по которым приложение будет разбиваться в главном файле?
Аварийная сигнализация указывает эту строку как ошибку из-за неправильной функции в Xcode, которая была представлена с выпусками серии 4.x. В принципе, неперехваченное исключение по умолчанию не сообщается, пока оно не достигнет верхнего уровня вашего приложения, а затем трассировка стека исключений не сообщается. Иногда это помогает подойти к контролеру точки прерывания и добавить перерыв в неперехваченных исключениях Objective-C; чаще всего это помогает обернуть строку из «main», которую вы указали в @ try/@ catch, а затем NSLog описание исключения и callStackSymbols. –
Спасибо, @PhillipMills - я сделал следующее: '@try { @autoreleasepool { return UIApplicationMain (argc, argv, nil, NSStringFromClass ([Load_CreatorAppDelegate class])); } } @catch (NSException * exception) { NSLog (исключение @ @ исключение:% @); [NSThread callStackSymbols]; } ' Это вы имели в виду? Программа по-прежнему рушится по главной линии и ничего не выводит –
Закрыть. Я бы отправился с '@try { @autoreleasepool { return UIApplicationMain (argc, argv, nil, NSStringFromClass ([Load_CreatorAppDelegate class])); } @catch (исключение NSException *) { NSLog (@ "Исключение:% @, Стек:% @", [исключение] не вижу причин для моей работы над этим. Другим вариантом было бы перемещение @ try/@ catch туда, где, по вашему мнению, генерируется фактическая ошибка. –