ios - AFNetworking 内存不足问题
<p><p>我使用此代码下载图像:</p>
<pre><code>- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
SECustomCollectionViewCell *collectionViewCell = (SECustomCollectionViewCell *);
NSDictionary *artwork = ;
collectionViewCell.theImageView.image = nil;
if (artwork[@"video_url"])
{
UIWebView *webView = (UIWebView *);
NSString * html = frame:collectionViewCell.frame];
;
;
;
}
else
{
NSMutableURLRequest *request = ]];
UIImage *cachedImage = [[ sharedImageCache] cachedImageForRequest:request];
if (cachedImage)
{
collectionViewCell.theImageView.image = ;
;
}
else
{
[collectionViewCell.theImageView setImageWithURLRequest:request placeholderImage:nil success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
// Only update visible cell, to avoid inserting image to another cell.
SECustomCollectionViewCell *visibleCollectionViewCell = (id);
if (visibleCollectionViewCell)
{
];
;
;
}
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
}];
}
}
return collectionViewCell;
}
</code></pre>
<p>但它会导致内存不足的问题。</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>导致内存使用的不是 AFNetworking,而是图像代码。 JPEG 压缩图像,但创建图像时,每个像素将有 4 个字节。由于服务器上 1.4MB 的 jpeg 文件将加载所有 AFNetworking。</p>
<p>您似乎正在使用一些帮助程序类查看该代码并 NSLog AFNetworking 下载的实际数据的大小。</p>
<p>一张 5407 × 3605、每像素 4 字节的图像将创建超过 77MB 的图像。您可以对其进行缩放,但首先会渲染原始图像,并且缩放将使用更多内存,因为最后您将拥有两个图像。</p>
<p>您需要将原始图像的创建和缩放包装在自动释放池中,以便尽快释放原始图像。</p>
<p>最好一开始就不要加载这么大的图片。</p></p>
<p style="font-size: 20px;">关于ios - AFNetworking 内存不足问题,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/27637203/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/27637203/
</a>
</p>
页:
[1]