Сбой (SIGABRT) при добавлении представления. (WebView)

У меня происходит сбой (вызванный исключением) при добавлении WebView. Я не понял почему. И да, я просматривал Интернет, потому что это очень распространенная проблема, но безуспешно, но я нашел ответ, что я должен внедрить DSYM для правильного отслеживания стека, потому что смотреть на все эти адреса просто бессмысленно (и я согласен) Дело в том, что я понятия не имею, как это сделать. Я нашел это: сохранить файлы Dsym. Но я не понял, как интегрировать его в свой проект, к тому же это выглядит опасно. И да, я тоже включил NSZombie, но безрезультатно.

Во всяком случае, сейчас на мой вопрос. У меня есть кнопка, которая запускает событие, событие меняет строку (URL) в соответствии с нажатой кнопкой. Затем этот IBAction вызывает делегата, и делегат выполняет переход к представлению, имеющему UIWebView, который открывается с URL-адресом, отредактированным IBAction. Итак, у меня есть следующий код:

Это метод делегата:

WebViewController *awebViewController = [[WebViewController alloc] 
                                         initWithNibName:@"WebView" bundle:nil];
[self setWebViewController:awebViewController];
[awebViewController release];
self.webViewController.finalURL = [NSMutableString stringWithFormat:@"%@", linkString];
[viewController.view removeFromSuperview];
// HERE happens the crash, found out using breakpoints
[self.window addSubview:[webViewController view]];

[UIView commitAnimations];
[viewController release];
viewController = nil;

Это точное сообщение о сбое:

-[WebView initWithCoder:]: unrecognized selector sent to instance 0x5718320
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '[WebView initWithCoder:]: unrecognized selector sent to instance 0x5718320'

У меня есть теория, что он пытается сделать переход, но нет никакого реального представления, чтобы добавить. Хотя это дикое предположение. Исключения обычно называют такими вещами, но в этом случае я не вижу, что происходит.

Спасибо за вашу помощь, и простите меня, если это слишком глупый вопрос.

3 ответа

Решение

Предположение с моей стороны:

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

Вы должны сначала проверить это в конструкторе интерфейса.
Это исключение именно то, что происходит, если вы измените класс элемента представления на класс, который недоступен.

Точная ошибка в том, что какой-то экземпляр класса называется WebView (не UIWebView) по адресу памяти 0x5718320 отправляется сообщение -initWithCoder:, который он не распознает. Это сообщение вызывается при загрузке представлений, созданных с помощью Interface Builder; проверьте ваши перья для просмотра, который вы изменили на пользовательский WebView учебный класс.

У меня была та же проблема, и я переименовал класс WebView в WebViewCustom с помощью функции рефрактора / переименования XCode, очистил проект, и теперь он работает нормально.

Другие вопросы по тегам