AVAssetImageGeneratorCompletionHandler - come impostare o variabili di ritorno?
-
26-10-2019 - |
Domanda
sto usando l'AVAssetImageGenerator per ottenere immagini da un movieclip senza giocare prima. Ora Ive ha ottenuto una domanda come impostare le variabili nel ciclo di un gestore? È possibile? Sto ricevendo questo messaggio di errore e non hanno idea che cosa significa. (Google> alcun risultato).
"Variabile non è cedibile (manca Tipo __block specifier) ??"
Quindi devo chiedere ai pro's qui. Here's il codice. Voglio salvare o restituire il mio generato imageData, così posso eliminare il messaggio "setImage" all'interno di quella seguente gestore.
UIImage* thumbImg = [[UIImage alloc] init];
AVAssetImageGeneratorCompletionHandler handler = ^(CMTime requestedTime, CGImageRef im, CMTime actualTime, AVAssetImageGeneratorResult result, NSError *error)
{
if (result != AVAssetImageGeneratorSucceeded)
{
NSLog(@"couldn't generate thumbnail, error:%@", error);
}
[button setImage:[UIImage imageWithCGImage:im] forState:UIControlStateNormal];
thumbImg = [[UIImage imageWithCGImage:im] retain];
[generator release];
};
sarebbe grande per conoscere questo. Grazie per il vostro tempo.
Soluzione
prima di tutto sembra che non c'è bisogno di init tuo thumbImg quando il suo dichiarato - oggetto UIImage creata in quella linea sarà sovrascritto in blocco e perderà. Basta init con valore nullo.
vero problema nel codice che è variabile che si sta andando a cambiare in blocco dovrebbe essere dichiarato con __block identificatore (come dice il messaggio di errore). Così il vostro 1s linea dovrebbe essere
__block UIImage* thumbImg = nil;