Лучший способ справиться с этой ошибкой? [AVCaptureFigVideoDevice setTorchModeOnWithLevel:error:]: нераспознанный селектор отправлен на экземпляр

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

  NSError* outError;
        BOOL success = [device setTorchModeOnWithLevel:brightnessLevel error:&outError];
        if(!success){
            [self.lightDialIndicator setHidden: YES];
            self.lightDial.image = [UIImage imageNamed:@"light_dial_disabled.png"];
        }

но мое приложение упало со следующей ошибкой

[AVCaptureFigVideoDevice setTorchModeOnWithLevel:error:]: unrecognized selector sent to instance 0x73ad460

Любая идея о лучшем / рабочем способе обнаружения, когда устройство не позволяет мне использовать setTorchModeOnWithLevel?

2 ответа

Решение

Прежде всего, setTorchModeOnWithLevel это свойство на AVCaptureDevice учебный класс.

Во-вторых, если вы хотите проверить, может ли класс ответить на определенный селектор, который вы вызываете, вы используете это:

BOOL isSuccessful = NO;
if ([device respondsToSelector:@selector(setTorchModeOnWithLevel:error:)]) {
    NSError* outError;
    isSuccessful = [device setTorchModeOnWithLevel:brightnessLevel error:&outError];
}
if (!isSuccessful) {
    [self.lightDialIndicator setHidden: YES];
     self.lightDial.image = [UIImage imageNamed:@"light_dial_disabled.png"];
}

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

Любая идея лучшего / рабочего пути

Да, делайте то, что вам говорят документы. setTorchModeOnWithLevel:error: это метод экземпляра, а не метод класса. Отправить его в экземпляр. Вы отправляете его классу (AVCaptureFigVideoDevice).

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