If I instantiate a UIImage like this :
UIImage *image = [[UIImage alloc] init];
The object is created but it doesn\'t contain any image.
This is updated version of @Kreiri, I put in a method and fixed logic error:
- (BOOL)containsImage:(UIImage*)image {
    BOOL result = NO;
    CGImageRef cgref = [image CGImage];
    CIImage *cim = [image CIImage];
    if (cim != nil || cgref != NULL) { // contains image
        result = YES;
    }
    return result;
}
An UIImage could only based on CGImageRef or CIImage. If both is nil means there is no image. Example use of giving method:
if (![self containsImage:imageview.image]) {
    [self setImageWithYourMethod];
}
hope it will help someone.
Check with CGImageRef with itself wheather it contains null value means UIImage object not contains image.......
Check for cgImage or ciImage, in Swift 3
public extension UIImage {
  public var hasContent: Bool {
    return cgImage != nil || ciImage != nil
  }
}
CGImage: If the UIImage object was initialized using a CIImage object, the value of the property is NULL.
CIImage: If the UIImage object was initialized using a CGImageRef, the value of the property is nil.
You can check if it has any image data.
UIImage* image = [[UIImage alloc] init];
CGImageRef cgref = [image CGImage];
CIImage *cim = [image CIImage];
if (cim == nil && cgref == NULL)
{
    NSLog(@"no underlying data");
}
[image release];
let image = UIImage()
let cgref = image.cgImage
let cim = image.ciImage
if cim == nil && cgref == nil {
    print("no underlying data")
}