Хобрук: Ваш путь к мастерству в программировании

Objective-C + WKWebkit Неопознанный селектор

Я довольно новичок в Objective-C/iOS Dev в целом и поседею по этому поводу. Кажется, я не могу заставить WKWebkit работать на всю жизнь.

После долгих поисков в Google я наконец собрал некоторый код, который компилируется, но приложение вылетает.

WebView.h

#import <UIKit/UIKit.h>
#import <Webkit/Webkit.h>
#import <objc/runtime.h>

@interface WebViewController: UIViewController <WKUIDelegate>;
@property (nonatomic, strong) WKWebView *webView
@end

WebView.m

@implementation WebViewController
-(void) viewDidLoad {
    [super viewDidLoad];
    if (NSClassFromString(@"WKWebView")) {
        _webView = [[WKWebView alloc] initWithFrame:[[self view] bounds]];
    } else {
        _webView = [[UIWebView alloc] initWithFrame:[[self view] bounds]];
    }
    NSString *urlString = @"http://www.google.com";
    NSURL *url = [NSURL URLWithString:urlString];
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
    [_webView loadRequest:urlRequest];
}
@end

У меня также есть класс, установленный как WebViewController в пользовательском классе в раскадровке.

Вот сообщение об ошибке, которое я продолжаю получать:

[WebViewController superview]: unrecognized selector sent to instance 0x7fdbb570e050

Любая подсказка, что я делаю неправильно? Я все еще слишком незнаком, чтобы сам поймать какие-либо очевидные ошибки. Большое спасибо!


  • Вы пытались установить точку останова для ошибки? Я могу дать дополнительный контекст. stackoverflow.com/questions/7156090 13.06.2018
  • У меня не было - спасибо за предложение! 14.06.2018

Ответы:


1

Ошибка говорит о том, что в вашем классе WebViewController нет метода superview. К сожалению, я не вижу проблемы в коде, который вы разместили, и предполагаю, что она где-то еще. Хотя сам код все еще очень сомнительный.

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

В общем могу предположить, что вы каким-то образом используете свой класс вместо UIView. UIViewController не является подклассом UIView, поэтому у него нет метода superview.

13.06.2018
Новые материалы

Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

Фишинг — Упаковано и зашифровано
Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

ВЫ РЕГРЕСС ЭТО?
Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

Расистский и сексистский робот, обученный в Интернете
Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

Управление состоянием в микрофронтендах
Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..