Ideally you never keep large number of UIImage objects of large images in memory.They will give u memory warnings.
If the Images are local files, you can do one thing, using a background thread to scale the big images to the size which is ideal for the carousel.Save these thumb nails and map them to the original image.
Load the thumb nails for carousel, and use the original image file for detailed image viewing.The thumb nails would be png for max performance.Jpeg decoding is not the native of iOS, and require more cpu to decode them than png.You dont have to keep the thumb nail data in core data, a .png file would do a nice job in my experience.You can use following code to load the image
UIImage * image = [UIImage imageWithContentsOfFile:filePath];
Here is the code to resize image
- (UIImage *)resizeImage:(UIImage*)image newSize:(CGSize)newSize {
CGRect newRect = CGRectIntegral(CGRectMake(0, 0, newSize.width, newSize.height));
CGImageRef imageRef = image.CGImage;
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0);
CGContextRef context = UIGraphicsGetCurrentContext();
// Set the quality level to use when rescaling
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, newSize.height);
CGContextConcatCTM(context, flipVertical);
// Draw into the context; this scales the image
CGContextDrawImage(context, newRect, imageRef);
// Get the resized image from the context and a UIImage
CGImageRef newImageRef = CGBitmapContextCreateImage(context);
UIImage *newImage = [UIImage imageWithCGImage:newImageRef];
CGImageRelease(newImageRef);
UIGraphicsEndImageContext();
return newImage;
}