Ios 停止使用手电筒

Ios 停止使用手电筒,ios,objective-c,nstimer,flashlight,Ios,Objective C,Nstimer,Flashlight,我有一个手电筒应用程序。 我用这个来制作闪光灯: NSTimer * myTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(toggleFlashlight)

我有一个手电筒应用程序。 我用这个来制作闪光灯:

NSTimer * myTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 
                                                     target:self 
                                                   selector:@selector(toggleFlashlight) 
                                                   userInfo:nil 
                                                    repeats:YES];`
- (void)toggleFlashlight{


    Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
    if (captureDeviceClass != nil) {
        AVCaptureDevice *device = 
         [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
        if ([device hasTorch] && [device hasFlash]){

            [device lockForConfiguration:nil];
            if (device.torchMode == AVCaptureTorchModeOff) {
                [device setTorchMode:AVCaptureTorchModeOn];
                [device setFlashMode:AVCaptureFlashModeOn];
                //torchIsOn = YES;
            } else {
                [device setTorchMode:AVCaptureTorchModeOff];
                [device setFlashMode:AVCaptureFlashModeOff];
                // torchIsOn = NO;
            }

        [device unlockForConfiguration];
        }
    }    
}
但我想在按下按钮时停止它。我该怎么做?如果我没有闪光灯,它就可以停止照明。

在你的停止方法中(你说除了你有闪光灯,它可以工作),取消任何计划的闪光灯定时器。。。并将相机设置为火炬模式

//stop timer
[myTimer invalidate];

//unflash
Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice");
if (captureDeviceClass != nil) {
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    if ([device hasTorch] && [device hasFlash]){
        [device lockForConfiguration:nil];
        [device setTorchMode:AVCaptureTorchModeOff];
        [device setFlashMode:AVCaptureFlashModeOff];
    }
    [device unlockForConfiguration];
}