2014-09-19 1 views

Répondre

0

Si vous devez exécuter du code à la fin de la fonction, il existe un paramètre "completionHandler".

Selon documentation: "Un bloc à invoquer après la capture de l'image.".

Éditer: Vous pouvez en savoir plus sur la programmation des blocs here. Comme une notation de bloc peut être un peu confuse, il y a une astuce simple qui peut vous aider. Lorsque vous créez une signature de fonction dans XCode en utilisant l'auto-complétion, vous avez des espaces réservés bleus pour les variables que vous devez passer. Maintenant, quand vous tapez 'enter' sur l'espace réservé au bloc, XCode génère un bloc vide avec la syntaxe correspondante pour vous.

+0

Je ne sais pas ce que vous demandez. Vous ne comprenez pas la notation par blocs? Vous ne savez pas comment sauvegarder l'image? Merci de préciser votre question –

+0

Je ne sais pas "notation de bloc" Je ne sais même pas de quoi vous parlez – suMi

0

Je chose que c'est ce que vous voulez

[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

Je pense avoir besoin d'explications. Qu'est-ce que c'est? "^ (CMSampleBufferRef imageSampleBuffer, erreur NSError *)"? J'ai évidemment besoin d'une fonction différente là-bas, donc j'ai besoin de comprendre ce qu'il fait et comment appeler un vide là – suMi

+0

Que voulez-vous dire par "appeler un vide"? Quant à la notation que vous ne comprenez pas, j'ai ajouté l'url à l'explication dans ma réponse. –

+0

@suMi ici^est une notation de bloc, les choses écrites avec la notation in^seront exécutées avec les paramètres une fois qu'une "captureStillImageAsynchronouslyFromConnection:" aura fini. Pour plus, vous devez vous familiariser avec "Blocs dans iOS" dans ios.Vous pouvez également regarder http://www.raywenderlich.com/9438/how-to-use-blocks-in-ios-5-tutorial-part -2 – mhrrt

Questions connexes