1

Я пытаюсь отключить изображение в своем приложении факела, если устройство не поддерживает светодиодное затемнение.Лучший способ справиться с этой ошибкой? [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 в вашем пример, но это относится к любому классу, в котором вы не знаете, имеет ли он определенный метод или нет.

1

Any idea of a better/working way

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