Лучший способ справиться с этой ошибкой? [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).