2017-03-14 9 views
0

整数を補完ハンドラに渡したいと思います。ハンドラは非同期であるため、補完ハンドラが実行されるまでにcountの値が不正確になる可能性があります。 countのCURRENT値をハンドラに渡して、ハンドラが呼び出されたときのカウントが正確になるようにしたいと思います。これはどうすればいいですか?Swiftの補完ハンドラに値を渡すには?

// Take image 
    func didPressTakePhoto(){ 

     if let videoConnection = stillImageOutput?.connection(withMediaType: AVMediaTypeVideo){ 

      videoConnection.videoOrientation = AVCaptureVideoOrientation.portrait 

      count = count + 1 

      //Capture image. everything in this closure is ASYNCHRONOUS? 
      stillImageOutput?.captureStillImageAsynchronously(from: videoConnection, completionHandler: { 
       (sampleBuffer, error) in 

       //Do something with count... 

      }) 
     } 
    } 

答えて

0

あなたはcountのために、この機能には宣言を持っていないので、私はcountがパラメータであることを前提としています。その場合、captureStillImageAsynchronously()を呼び出した後に変更されたとしても、countself.count(ブロック内に必須)を使用してアクセスすると、最新の値はcountになります。

countが複数のソースから同時に読み書きできる可能性がある場合は、スレッドセーフであることを確認する必要があります。

+0

グローバル変数としてカウントアウトを宣言しました。 – bakalolo

関連する問題