Ios7 captureOutput:didOutputMetadataObjects:fromConnection:Delegate多次触发

Ios7 captureOutput:didOutputMetadataObjects:fromConnection:Delegate多次触发,ios7,avfoundation,Ios7,Avfoundation,captureOutput:didOutputMetadataObjects:fromConnection:Delegate多次触发。我需要将扫描的值传递给服务器,以便在一次扫描中服务器上发生多个调用 正如苹果的文档所说:“这个方法可能会被频繁调用,您的实现应该能够有效地防止捕获性能问题,包括丢失的元数据对象” 处理多个调用执行以下操作: - (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObject

captureOutput:didOutputMetadataObjects:fromConnection:Delegate多次触发。我需要将扫描的值传递给服务器,以便在一次扫描中服务器上发生多个调用

正如苹果的文档所说:“这个方法可能会被频繁调用,您的实现应该能够有效地防止捕获性能问题,包括丢失的元数据对象”

处理多个调用执行以下操作:

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection
{
    id capturedData;
        if ([metadataObjects count] > 0) {
            // handle your captured data here

            [self performSelectorOnMainThread:@selector(stopReading:) withObject:capturedData waitUntilDone:NO];

        }

}
stopReading:方法看起来(假设您的_会话是AVCaptureSession对象,_prevLayer是您先前使用的AVCaptureVideoPreviewLayer):

-(void)stopReading:(id) data{
    NSLog(@"stop reading");
    [_session stopRunning];
    _session = nil;
    [_prevLayer removeFromSuperlayer];
// do what you want with captured data
    [self.delegate didScanBarCodeWithContext:data];
}