I'm making an app which will fetch pictures resources and text from web service. I pick the great AFNetworking's UIImageView+AFNetworking category to deal with the image downloading stuff.
However, I'm facing a memory problem. I used Allocation tool of the Instruments, finding each time I load more images, there will always be a growth of memory allocation, 1-2 MB in size. I tracked down to the source code, it turned out that it lies in AFNetworking's code.
The exact line of code is:
- (void)connectionDidFinishLoading:(NSURLConnection *)__unused connection {
self.responseData = [self.outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey];
[self.outputStream close];
[self finish];
self.connection = nil;
}
This will occupy 99.6% of the memory allocation.
I user ARC in the project, display the UIImageViews in a UITableView and configure the cell like the following code:
[self.imageView setImageWithURLRequest:request
placeholderImage:nil
success:successBlock
failure:failBlock];
Can any one offer some idea about the memory issue? It's really a headache cuz once the memory is allocated, they will never be cleared even if I cleared the whole image view. After a little while, my app will occupy more than 100MB from the Real Memory Usage window of Instruments.
Any help will be greatly appreciated!! Thanks in advance!!
It is possible to clear the cache of images. There is a discussion about it on github here:
AFNetworking Image Cache
That may or may not solve your problem. I would imagine clearing the cache on a regular basis should keep your memory usage down though.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With