问题可能是图像太大。您可能想要做的是在每个 UIImageView 上设置图像属性之前调整下载图像的图像大小。
Bill Dudney 就该主题出版了一本非常有用的 iBook,其中详细介绍了图像对内存的影响以及如何对其进行优化。价格为 4.99 美元,非常有帮助。
https://itunes.apple.com/us/book/all-image-io-you-need-to-know/id601759073?mt=11 https://itunes.apple.com/us/book/all-image-io-you-need-to-know/id601759073?mt=11
以下方法会将图像大小调整为给定大小,这将减少内存占用并有望防止出现问题。
- (UIImage *)resizeImage:(UIImage *)image size:(CGSize)size {
UIGraphicsBeginImageContext(size);
[image drawInRect: CGRectMake(0, 0, width, height)];
UIImage *resizedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resizedImage;
}
现在,如果您使用 AFNetworking 通过 AFNetworking 类别直接从 URL 设置图像,您可能需要使用替代方法,以便可以干预图像并调整图像大小。下面的代码将做到这一点。
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:imageURL];
[request addValue:@"image/*" forHTTPHeaderField:@"Accept"];
[imageView setImageWithURLRequest:request placeholderImage:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
// resize image
// set image on imageView
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
// handle error
}];