Что вызывает этот тип ошибки.Нет видимого @interface для xxxxxx.Коренная причина.Не только этот - PullRequest
0 голосов
/ 12 мая 2018

Я вижу, что есть 869 вопросов в течение многих лет, спрашивающих, как исправить эту ошибку. То, что я пытаюсь понять, является основной причиной этого сообщения. Каждый из 869 вопросов отличается. Включая этот. Я обновляю код из ресурсов Apple Код AVCamera для работы с iOS11. Obj-с. В этом случае строка, возвращающая эту ошибку, равна

[stillImageOutput setOutputSettings: outputSettings];

Однако, что мне действительно нужно , так это понять, каковы основные причины этой ошибки. Не только в этом случае, но в большинстве случаев. Я впервые собрал этот проект в 2014 году, и, конечно, с тех пор было десяток обновлений, поэтому есть много устаревших заявлений. У меня сейчас 8 амортизационных отчислений, но у меня всплывают три ошибки. Это был один из них. Два НЕТ видимых интерфейсов и один Нет известного класса.

        //AVCaptureStillImageOutput *stillImageOutput = [[AVCaptureStillImageOutput alloc] init];
    AVCapturePhotoOutput *stillImageOutput = [[AVCapturePhotoOutput alloc] init];
    if ([session canAddOutput:stillImageOutput])
    {
       // [stillImageOutput setOutputSettings:@{AVVideoCodecKey : AVVideoCodecTypeJPEG}];
        NSDictionary *outputSettings = @{ AVVideoCodecKey : AVVideoCodecTypeJPEG};
        [stillImageOutput setOutputSettings:outputSettings];

        [session addOutput:stillImageOutput];
        [self setStillImageOutput:stillImageOutput];
    }
});

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Хорошо, я понимаю обстоятельства, лежащие в основе решения Apple.Что касается кода выше, я решил это, просто изменив код на этот.Избыточный код закомментирован, а новый код вставлен.

Однако фундаментальный вопрос «Нет видимого интерфейса» остается для меня загадкой.Что именно это значит?

        //AVCaptureStillImageOutput *stillImageOutput = [[AVCaptureStillImageOutput alloc] init];
    AVCapturePhotoOutput *stillImageOutput = [[AVCapturePhotoOutput alloc] init];
    if ([self.session canAddOutput:stillImageOutput])
    {
        [self.session addOutput:stillImageOutput];
        self.stillImageOutput = stillImageOutput;

       // [stillImageOutput setOutputSettings:@{AVVideoCodecKey : AVVideoCodecTypeJPEG}];
       // NSDictionary *outputSettings = @{ AVVideoCodecKey : AVVideoCodecTypeJPEG};
       // [stillImageOutput setOutputSettings:outputSettings];

        //[session addOutput:stillImageOutput];
        //[self setStillImageOutput:stillImageOutput];
    }
});
0 голосов
/ 12 мая 2018

Как и в комментарии Сергея, метод, который называется «НЕТ видимых интерфейсов» и Никакой известный класс, не удаляется из SDK для iOS 11. Apple иногда делает эти радикальные изменения. Но обычно эти методы и классы помечаются как устаревшие, а затем (после некоторых серьезных обновлений iOS) они удаляются.

...