In meiner Sicht habe ich Bildansicht, die Daten für die Bildansicht kommt Form Url, die Bilder sind um 1-3 MB. Wenn der Benutzer Swipes, dann möchte ich das nächste Bild laden, funktioniert alles gut, wenn swiped langsam, aber wenn ich schnell geklaut habe möchte ich die vorherige Operation abbrechen und mit neuen URL beginnen.NsoperationQueue Abbrechen alle Operationen wird nicht abgebrochen, bis es den Vorgang beendet
Für Ex. Wenn der Benutzer 4 Mal wischt, wenn die Operationen für das 2. und 3. Bild in der Mitte sind, möchte ich diese abbrechen und das 4. Bild starten.
Jetzt aber an die Stelle des 4. Bildes bekomme ich zuerst 2. Bild folgt 3. und dann erscheint das 4. Bild.
Hier ist mein Beispielcode
- (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
}];
}];
}
Danke.
Bitte bemühen Sie den Code so zu formatieren, dass andere Leute es lesen kann. – jtbandes
Erinnern Sie 'BackgroundOperation' jedes Mal, wenn ein Bild geladen werden muss (mit' BackgroundOperation = [[NSOperationQueue alloc] init]; ')? –