请求访问 Objective-C 中的相机

Request access for camera in Objective-C

我从这个 answer 中获取了这个 objective-c 代码,用于请求在 iOS 上使用相机。

[AVCaptureDevice requestAccessForMediaType:mediaType completionHandler:^(BOOL granted)
    {
      if(granted){
        return true;
      } else {
        return false;
      }
    }];

我收到这个错误:

Cannot initialize a parameter of type 'void (^ _Nonnull)(BOOL)' with an rvalue of type 'bool (^)(BOOL)'

错误是什么?

completionHandler 的 return 类型是 void,因此您的 return 语句导致了问题。

即使这个完成块有一个 BOOL return 值,它也会是 iOS 方法接收 return 值;不是你的代码。

我猜您想将结果报告回您的应用程序。因为这个完成块将被异步调用,所以您需要添加将结果传递给您的应用程序的逻辑。这可以是委托调用,调用您在完成处理程序中可以访问的对象的方法,...

它是异步的,这意味着您调用它的方法可能已经 returned.

阅读 documentation 请注意,可以在任意队列上调用此完成处理程序,如果您正在进行 UI 调用,则您有责任移至主队列。