2017-03-14 6 views
0

완료 처리기에 정수를 전달하고 싶습니다. 핸들러가 비동기 적이기 때문에 완료 핸들러가 실행될 때까지 count 값이 정확하지 않을 수 있습니다. count의 CURRENT 값을 핸들러에 전달하여 핸들러가 호출 될 때 카운트가 정확하도록하려고합니다. 어떻게해야합니까? 당신이 count이 기능에는 선언이 없기 때문에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에 을 호출 한 후 변경된 경우에도 (블록에서 필수) count을 사용하여 최신 값인 count을 가져옵니다.

count이 여러 소스에서 동시에 쓰고 읽을 수있는 경우 스레드로부터 안전해야합니다.

+0

전역 변수로 외부 계산을 선언했습니다. – bakalolo