There are two subclasses of UIImageView and UIImage as BCImageView and BCImage. You can use these classes in your project. This will take care of caching the images downloaded from URLs. So in simple words , these classes will not download the same image URL again. It will cache the images according to the image URLs.
Latest commit 500a9de Apr 13, 2012 @BharatJagtap Update README
Failed to load latest commit information.


There are two classes BCImageView and BCImage. These classes will help you in downloading and caching the images from urls,

Its a simple subclass of UIImageView. Instead of UIImageView, you should use this class to create image views in the Project.

BCImageView * imageView = [BCImageView imageViewWithURL:@"<image-url>" placeHolderImage:@"<place_holer_image_name>"];

Above line downlods the image at the specified url , stores it in Cache Directory. You can also pass a placeholder image name.
By the time the actually image gets dwonloaded , the placeholder image would be displayed . The placeholder image should be available
in the Application bundle. 

Now next time you hit the same url to create the image view then it load the image that has been cached already. 

If you at all want to flush out all the images that have been cached use below line.

BOOL success  = [BCImage flushCacheDirectory];