NsoperationQueue Annuler toutes les opérations n'est pas annulée jusqu'à ce qu'il termine l'opération

De mon point de vue, j'ai d'affichage de l'image, les données d'affichage de l'image vient de l'Url, les images sont environ 1-3 MO .
Si l'utilisateur effectue alors je veux charger l'image suivante, Chaque chose fonctionne bien si les glisser lentement, Mais quand je l'ai lue Rapidement je veux Annuler l'opération précédente et de commencer avec la nouvelle url.

Pour Ex. si l'utilisateur effectue 4 fois si les opérations pour les 2ème et 3ème des images est dans le milieu, je veux annuler celles et démarrer le téléchargement 4 ème image

Mais maintenant, À la place de 4ème image, je suis la première de la 2e image suit 3ème et 4 ème image apparaît.

Voici mon exemple de code

- (void)handleSwipeLeft:(UISwipeGestureRecognizer *)aSwipeGestureRecognizer {


    [BackgroundOperation cancelAllOperations];  //To cancel previous one 


    [self performSelector:@selector(LoadImage) withObject:nil afterDelay:0.1];


}

-(void)LoadImage
{
    BackgroundOperation=[[NSOperationQueue alloc]init];  


    imgvww.image=[UIImage imageNamed:@"loader.png"]; //Place holder    till download finishes 


   [BackgroundOperation addOperationWithBlock:^
     {
         UIImage *img=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[[self.ItemDetails objectAtIndex:0] objectForKey:@"ImageUrl"]]]];  //Getting data from URL 

         [[NSOperationQueue mainQueue] addOperationWithBlock:^{


             imgvww.image=img;  //Adding to image view after completion 


         }];

     }];
 }

Merci.

Merci de faire un effort pour formater votre code de telle sorte que d'autres personnes de le lire.
Êtes-vous recréer BackgroundOperation chaque fois qu'une image doit être chargée (avec BackgroundOperation=[[NSOperationQueue alloc]init];)?

OriginalL'auteur siva krishna | 2015-08-29