KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am implementing an iOS App that needs to fetch a huge amount of images over HTTP. I've tried several approaches but independently what I do, Instuments shows constantly increasing memory allocations and the App crashes sooner or later when I run it on a device. There are no leaks shown by Instruments. So far I have tried the following approches: Fetch the images using a synchronous NSURLConnection within an NSOperation Fetch the images using a asynchronous NSURLConnection within an NSOperation Fetch the images using [NSData dataWithContentsOfURL:url] in the Main-Thread Fetch the images using synchronous ASIHTTPRequest within an NSOperation Fetch the images using asynchronous ASIHTTPRequest and adding it to a NSOperationQueue Fetch the images using asynchronous ASIHTTPRequest and using a completionBlock The Call Tree in Instrumetns shows that the memory is consumed while processing the HTTP-Response. In case of asynchronous NSURLConnection this is in - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [receivedData appendData:data]; } In case of the synchronous NSURLConnection, Instruments shows a growing CFData (store) entry. The problem with ASIHTTPRequest seems to be the same as with the asynchronous NSURLConnection in a analogous code-position. The [NSData dataWithContentsOfURL:url] approach shows an increasing amount of total memory allocation in exactely that statement. I am using an NSAutoReleasePool when the request is done in a separate thread and I have tried to free up memory with [[NSURLCache sharedURLCache] removeAllCachedResponses] - no success. Any ideas/hints to solve the problem? Thanks. Edit: The behaviour only shows up if I persist the images using CoreData. Here is the code I run as a NSInvocationOperation: -(void) _fetchAndSave:(NSString*) i
Tags (comma-separated)
Save Edits
Cancel