0

ASIHTTPからAFNetworkingライブラリに移動しました。また、OlivierPoitreyとPeterSteinbergのSDURLCacheライブラリを使用しています。アプリケーションで使用するすべての画像をキャッシュしたいと思います。これらのために、私はこれを試しました:

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

また、画像を表示する必要がある場合は、画像ごとにこれを実行しています。

  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];

しばらくすると、アプリケーションはメモリ警告を出し、その後シャットダウンします。そのために、私は次のことをしました:

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

キャッシュをクリアしますが(私は何をしませんか)、しばらくすると、アプリケーションは再び閉じます。

そのために私は何をすべきですか?

4

1 に答える 1

0

この問題は、ARCがキューまたはバックグラウンドスレッドに自動的に設定されないために発生する可能性があります。私は同じ問題を抱えていて、次の記事でそれを解決しました:

https://agilewarrior.wordpress.com/2012/04/09/memory-leaks-with-arc/

于 2012-08-16T10:09:34.447 に答える