dispatch_queue_t DISPATCH_QUEUE_SERIAL在 react native ios 项目中 objective-C 不起作用

dispatch_queue_t DISPATCH_QUEUE_SERIAL in react native ios project objective-C not working

提问人:Rajendra 提问时间:10/11/2023 更新时间:10/11/2023 访问量:28

问:

我想调用类的委托方法。实现如下,AVCaptureMetadataOutput

//Protocol inheritance
  @interface QRScannerVC : UIViewController<AVCaptureMetadataOutputObjectsDelegate>{

//Code of delegate assignment of AVCaptureMetadataOutput
capturedMetadataOutput = [[AVCaptureMetadataOutput alloc] init];
[_captureSession addOutput:capturedMetadataOutput];
capturedMetadataOutput.metadataObjectTypes = @[AVMetadataObjectTypeQRCode];
dispatch_queue_t dispatchQueue = dispatch_queue_create("qrQueue", DISPATCH_QUEUE_SERIAL);
//Delegate method assignment
[capturedMetadataOutput setMetadataObjectsDelegate:self queue:dispatchQueue];

Delegate method,
- (void)captureOutput:(AVCaptureOutput *)output didOutputMetadataObjects:(NSArray<__kindof AVMetadataObject *> *)metadataObjects fromConnection:(AVCaptureConnection *)connection {

    if (metadataObjects != nil && metadataObjects.count > 0) {
        
        AVMetadataMachineReadableCodeObject *metadataObject = [metadataObjects objectAtIndex:0];
        
        if ([[metadataObject type] isEqualToString:AVMetadataObjectTypeQRCode]) {
            
            [_labelStatus performSelectorOnMainThread:@selector(setText:) withObject:[metadataObject stringValue] waitUntilDone:NO];
            
            [self performSelectorOnMainThread:@selector(stopReading) withObject:nil waitUntilDone:NO];
            _isReading = NO;
        }
    }

根据 apple 文档方法,必须在串行队列上调用才能进行连续流式处理。根据 react native 文档,如果操作需要很长时间才能完成,我们可以调用我们的方法。capturedMetadataOutput:setMetadataObjectsDelegate:queue

但就我而言,方法不调用。如果我在纯 iOS 原生 Objective-C 项目中使用相同的代码,那么它会很好用。 不明白什么是React native中的问题。capturedMetadataOutput:setMetadataObjectsDelegate:queue

iOS Objective-C 多线程 React-Native AVFafoundation

评论

0赞 Larme 10/20/2023
我们确定这不是零,而且我猜持有它没有解除分配?它被宣布了吗?_captureSessionQRScannerVC@property(strong, nonatomic) AVCaptureSession *captureSession
0赞 Rajendra 10/20/2023
@Larme,我不知道有什么问题。但是这个问题发生在各种库中,例如react-native-vision-camera。我在官方 git 支持页面上发布了这个问题 github.com/facebook/react-native/issues/41031 但没有回复。
0赞 Rajendra 10/20/2023
@Larme,我在搜索后发现另一个 lib react-native-camera-kit 使用相同的代码运行良好,但 github.com/teslamotors/react-native-camera-kit/blob/master/ios/ 每个地方都只有区别......特斯拉将整个摄像头会话放在队列中。

答: 暂无答案