Add AFNetworking to your project (eg. via cocoapods.org), copy these two files into your project, then
#import UIImageView+AFNetworkingFadeInAdditions.h
and use it like this:
[imageView setImageWithURL:myNSURL placeholderImage:someUIImageOrNil fadeInWithDuration:0.2f];
After tweaking your example, it seems to be that:
if (!request) // image was cachedshould be changed to:
if (!response) // image was cachedAFNetworking returns a nil response, not a nil request when retrieved from the cache.