2014-09-19 50 views

回答

0

如果需要在函數完成時運行一些代碼,則有「completionHandler」參數。

根據documentation:「在圖像被捕獲後調用的塊」。

編輯:你可以閱讀關於塊編程here。由於塊符號可能有點混亂,有一個簡單的技巧可以幫助你。當您使用自動完成功能在XCode中創建函數簽名時,您需要傳遞需要傳遞的變量的藍色佔位符。現在,當您在塊佔位符上點擊「輸入」時,XCode會爲您生成具有匹配語法的空白塊。

+0

我不知道你要求做什麼。你不明白塊符號?你不知道如何保存圖像?請說明你的問題。 – 2014-09-19 16:26:24

+0

我不知道「block notation」我甚至不知道你在說什麼 – suMi 2014-09-19 16:29:07

0

我的事情這是你想要

[self.avSnapper captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler: ^(CMSampleBufferRef imageSampleBuffer, NSError *error){ 

    CFDictionaryRef exifAttachments = CMGetAttachment(imageSampleBuffer, kCGImagePropertyExifDictionary, NULL); 
    if (exifAttachments){ 

     // Do something with the attachments if you want to. 
     NSLog(@"attachements: %@", exifAttachments); 
    } 
    else 
     NSLog(@"no attachments"); 

    NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageSampleBuffer]; 
    UIImage *image = [[UIImage alloc] initWithData:imageData]; 

    self.vImage.image = image; 
}]; 
+0

我想我需要一些解釋。這是什麼? 「^(CMSampleBufferRef imageSampleBuffer,NSError *錯誤)」?我顯然需要一個不同的功能,所以我需要了解它在做什麼以及如何在那裏調用一個void – suMi 2014-09-19 16:33:10

+0

你是什麼意思的「調用一個空白」?至於你不明白的符號,我在我的答案中加入了url來解釋。 – 2014-09-19 16:37:33

+0

@suMi這裏^是塊表示法,一旦「captureStillImageAsynchronouslyFromConnection:」完成,用^表示法寫的東西將與所述參數一起執行。要了解更多信息,您需要熟悉ios中的「iOS中的塊」。您還可以查看http://www.raywenderlich.com/9438/how-to-use-blocks-in-ios-5-tutorial-part -2 – mhrrt 2014-09-19 17:04:12

相關問題