J'ai un problème avec ce code.Basiquement, je veux exécuter le fwrite à partir d'une fonction de minuterie asyncronusly.NSOperation et fwrite (Iphone)
Voici le bloc de code dans ma fonction Minuterie. (Ceci appellera par la minuterie tous la méthode 0,2 seconde.
-(void)timerFunction
{
WriteFileOperation * operation =
[WriteFileOperation writeFileWithBuffer:pFile buffer:readblePixels length:nBytes*15];
[_queue addOperation:operation]; // Here it is waiting to complete the fwrite
}
Le WrtiteFilerOperation est une classe NSOperation qu'il doit écrire le tampon de passage dans un fichier. J'ai ajouté ce code dans « Démarrer » WriteFileOperation.
- (void)start
{
if (![NSThread isMainThread])
{
[self performSelectorOnMainThread:@selector(start) withObject:nil waitUntilDone:NO];
return;
}
[self willChangeValueForKey:@"isExecuting"];
_isExecuting = YES;
[self didChangeValueForKey:@"isExecuting"];
NSLog(@"write bytes %d",fwrite(_buffer, 1, _nBytes, _file));
free(_buffer);
[self finish];
}
le problème est ici, mon timerFunction bloqué par NSOperation jusqu'à ce qu'il écrit le tampon dans le fichier. (je veux dire bloqué jusqu'à ce que la méthode de démarrage se termine son exécution) et la performance semble même que placer directement le fwrite dans timerFunction.
Je veux juste revenir à timerFunction sans attendre l'exécution de la méthode start.
Qu'est-ce que je fais mal ici?
Merci à l'avance
Raghu