2014-10-05 60 views
-2

我发现了代码,我想在一个快速的ios应用程序中使用,但我很难快速写入它。如何在swift中编写这个void objective-c函数

-(void) captureOutput:(AVCaptureOutput*)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection*)connection 
{ 
    CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer); 
    CGSize imageSize = CVImageBufferGetEncodedSize(imageBuffer); 
    // also in the 'mediaSpecific' dict of the sampleBuffer 

    NSLog(@"frame captured at %.fx%.f", imageSize.width, imageSize.height); 
} 

这只是我遇到的函数声明,函数的内容应该更容易。我不习惯的语法:

-(void) captureOutput:(AVCaptureOutput*)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection*)connection 

我尝试:

我开始尝试写这样的,但没事的时候就在()内自动完成我意识到这是绝对错误的:

func captureOutput(AVCaptureOutput(didOutputSampleBuffer:)) { 

} 
+0

发表您的SWIFT代码的企图? – 2014-10-05 18:21:08

+0

添加了我自己的尝试 – iamjonesy 2014-10-05 18:26:30

+0

这不是一个有效的问题吗?为什么倒票加上关闭? – iamjonesy 2014-10-05 18:33:18

回答

4

你可以找到在AVCaptureVideoDataOutputSampleBufferDelegate Protocol Reference,在声明这样正确的声明:

optional func captureOutput(_ captureOutput: AVCaptureOutput!, 
    didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, 
    fromConnection connection: AVCaptureConnection!) 

在你的方法定义你不会写optional,虽然:

class MyDelegate: NSObject, AVCaptureVideoDataOutputSampleBufferDelegate { 

    func captureOutput(captureOutput:AVCaptureOutput, 
     didOutputSampleBuffer sampleBuffer:CMSampleBuffer, 
     fromConnection connection:AVCaptureConnection) { 

      let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) 
      let imageSize = CVImageBufferGetEncodedSize(imageBuffer) 

      NSLog("frame captured at %.fx%.f", imageSize.width, imageSize.height) 
    } 

} 
+0

感谢抢劫帮助! – iamjonesy 2014-10-05 21:16:52

相关问题