2012-04-10 16 views
0

Ich bin gerade von ASIHTTP zu AFNetworking-Bibliothek verschoben. Ich benutze auch SDURLCache Bibliothek von Olivier Poitrey und Peter Steinberg. Ich möchte alle Bilder zwischenspeichern, die ich in meiner Anwendung verwenden werde. Für diese habe ich versucht, dieses:Speicherleck in AFNetworking Cache-Bilder in IOS

NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 
     for(NSURLRequest *imageRequest in imageRequestArray){ 
      AFURLConnectionOperation *operation2 = [[[AFURLConnectionOperation alloc] initWithRequest:imageRequest] autorelease]; 
      [queue addOperation: operation2]; 
      [operation2 waitUntilFinished]; 
} 

Und wenn ich Bilder zeigen müssen, ich dies für jedes Bild tue:

NSURL *url = [NSURL URLWithString:[cat imagePath]]; 
     NSURLRequest *imageRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30.0]; 


     AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:imageRequest 
                        imageProcessingBlock:nil 
                          cacheName:@"nscache" 
                           success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image){ 
                            //NSData *responseData = [request responseData]; 
                            imageView.alpha = 0.0; 
                            [imageView setImage:image forState:UIControlStateNormal]; 
                            [UIView beginAnimations:@"ToggleViews" context:nil]; 
                            [UIView setAnimationDuration:1.0];     
                            imageView.alpha = 1.0; 
                            [UIView commitAnimations]; 
                           } 
                           failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error){} 
               ]; 
     [operation start]; 

Nach einer Weile gibt Anwendungsspeicher Warnung, schaltet sich dann nach unten. Dafür habe ich die folgenden:

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { 
[[NSURLCache sharedURLCache] removeAllCachedResponses]; 
NSLog(@"Memory Warning..."); 
} 

Es löscht den Cache (was ich tue nicht, was), aber nach einer Weile Anwendung schließt sich wieder.

Was soll ich dafür tun?

+0

Ich glaube, ich bin ein ähnliches Problem haben, wenn ich mit Instrumenten die Speicherauslastung meiner App überprüft ständig nach oben, bis er über 200megs trifft dann Die App wird aufgrund einer Speicherwarnung beendet. Ich versuche, das Problem zu verfolgen, es scheint jedoch keine Lecks zu geben –

Antwort